如何获得设备环境句柄(HDC)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

方法(详细参数及其调用可以看考MSDN):

1、 HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName)

HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter,LPCTSTR lpClassName, LPCTSTR lpWindowName)

2、 HWND WindowFromPoint(POINT& Point)

3、 BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)

BOOL CALLBACK EnumChildWindows(HWND hWndParent, WNDENUMPROC lpEnumFunc,LPARAM lParam)

BOOL CALLBACK EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam)

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)

二、由窗口句柄得到设备环境句柄HDC
方法:BeginPaint、GetWindowDC、GetDC。这些函数都需要步骤一中的HWND的句柄。调用这些函数后要释放句柄,相应的有EndPaint、ReleaseDC进行清理。

1、 采用BeginPaint获取HDC

HDC hdc;

PAINTSTRUCT ps;// 保存

hdc = ::BeginPaint( hwnd, &ps );

// 此处添加绘图代码

::EndPaint( hwnd, &ps );

说明:获得的hdc的有效区域仅限于客户区无效区域的设备环境句柄,不包括标题栏、边框等。

2、 采用GetWindowDC获取HDC

HDC hdc = ::GetWindowDC( hwnd );

// 此处添加绘图代码

::ReleaseDC( hwnd, hdc );

说明:绘制区域是整个窗口(边框、标题栏、客户区的总和)。

3、 采用GetDC获取HDC

HDC hdc = ::GetDC( hwnd );

// 此处添加绘图代码

::ReleaseDC( hwnd, hdc );

说明:获得的hdc的有效区域仅限于客户区有效区域的设备环境句柄,不包括标题栏、边框等。



相关文档
最新文档