|
WINCE500\PRIVATE\TEST\GWES\GDI\GDIAPI的verify.cpp中,有一个小代码如下:
GetClipBox(TDC tdc, LPRECT lprc)
{
return GetClipBox(VALIDDC(tdc), lprc);
}
1:VALIDDC的定义:#define VALIDDC(tdc) tdc?tdc->GetDC():NULL
2:GetDC返回是HDC,而且typedef HDC TDC;所以我就是觉得GetClipBox(TDC tdc, LPRECT lprc)的参数与
GetClipBox(VALIDDC(tdc), lprc);完全一致
3:其中GetClipBox似乎是标准的API函数;
这个代码到底在做什么,我有两种猜测:
1不断地循环地在调用自己?调到什么时候会结束?
2函数的重载?但是函数的重载要求参数不一致,可这里的参数按上面的分析又完全是一致的?
这个代码到底是啥意思呢?
verify.cpp这个文件中有很多这种类似的用法,下面也是其中一种情况。。
其中还是在verify.cpp中,存在着myGetDC(HWND hWnd),参数也是一样的,当调用该函数时到底也应该调哪个定义呢?具体两个定义如下:
HDC myGetDC(HWND hWnd)
{
return GetDC(hWnd);
}
TDC myGetDC(HWND hWnd)
{
HDC hdcPrim = GetDC(hWnd),
hdcSec = NULL;
TDC tdc = NULL;
int LastErrorSave = GetLastError();
if (hdcPrim)
{
if(g_bRTL)
SetLayout(hdcPrim, LAYOUT_RTL);
if (DoVerify())
{
hdcSec = CreateDC(gszVerifyDriverName, NULL, NULL, NULL);
if (!hdcSec)
{
DWORD dwLastError = GetLastError();
ReleaseDC(hWnd, hdcPrim);
SetLastError(dwLastError);
return NULL;
}
}
tdc = new cTdc(hdcPrim, hdcSec, NULL);
}
SetLastError(LastErrorSave);
return tdc;
}
谁能帮我看看,谢谢。
|
|