如何获取设备描述表句柄--WIN32 api
来源:互联网 发布:子曰法语之言能无从乎 编辑:程序博客网 时间:2024/06/07 07:07
Windows提供了几种获取设备描述表句柄的方法,如果在处理一条消息时获取了设备描述表句柄,应该在退出窗口函数之前释放它。一旦释放了句柄,它就不再有效了。
1、最常用的获取并释放设备描述表句柄的方法是,在处理WM_PAINT消息时,使用的BeginPaint和EndPaint调用:
hdc = BeginPaint(hwnd,&ps);//other program linesEndPaint(hwnd,&ps);
变量ps是类型为PAINTSTRUCT的结构,该结构的hdc字段是BeginPaint返回的设备描述表句柄。
PAINTSTRUCT结构又包含一个名为rcPaint的RECT结构,rcPaint定义一个包围窗口客户区无效范围的矩形。使用从BeginPaint获得的设备描述表句柄,只能在这个区域内绘图。BeginPaint调用使该区域有效。
hdc = GetDC(hwnd);//other program linesReleaseDC(hwnd,hdc);
这个设备描述表使用于窗口句柄为hwnd的客户区。这些调用与BeginPaint和EndPaint的组合之间的基本区别是,利用从GetDC返回的句柄可以在整个客户区上绘图。当然,GetDC和ReleaseDC不使客户区中任何可能的无效区域变成有效。
3、Windows程序还可以获取适用于整个窗口(而不仅限于窗口的客户区)的设备描述句柄:
hdc = GetWindowDC(hwnd);//other program linesReleaseDC(hwnd,hdc);
这个设备描述表除了客户区之外,还包括窗口的标题栏、菜单、滚动条、和框架。GetWindowDC函数很少使用,如果想尝试用一用它,则必须捕获WM_NCPAINT(非客户绘制)消息,Windows使用该消息在窗口的非客户区上绘图。我们看到大部分的网络游戏的登陆器就是利用这个设备描述表句柄来完成的个性化制作。
hdc = CreateDC(pszDriver,pszDevice,pszOutput,pData);//other program linesDeleteDC(hdc);
列如,可以通过下面的调用来获取整个屏幕的设备描述表句柄:
hdc = CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
有时候只是需要获取关于某设备描述表的一些信息而并不进行任何绘图,在这种情况下,可以使用CreateIC来获取一个“信息描述表”的句柄,其参数与CreateDC函数相同,列如:
hdc = CreateIC(TEXT("DISPLAY"),NULL,NULL,NULL);
不可以使用这个信息环境句柄往设备上写东西。
当使用位图时,获取一个“内存设备描述表”有时是有用的:
hdcMem = CreateCompatibleDC(hdc);//other program linesDeleteDC(hdcMem);
利用这个函数可以将位图选进内存设备描述表,然后使用GDI函数在位图上绘画。
还可以获取元文件设备描述表来创建元文件:
hdcMeta = CreateMetaFile(pszFiename);//other program lineshmf = CloseMetaFile(hdcMeta);
在元文件设备描述表有效期间,任何用hdcMeta所做的GDI调用都变成元文件的一部分而不会显示。在调用CloseMetaFile之后,设备描述表句柄变成无效,函数返回一个指向元文件(hmf)的句柄。
- 如何获取设备描述表句柄--WIN32 api
- 获取设备描述表句柄
- 获取设备描述表句柄示例
- WIN32 API获取窗口句柄
- TextOut函数及设备描述表句柄的获取
- Win32 API 获取窗口句柄方法 分享
- win32 API窗口句柄
- 如何获得设备环境句柄(HDC)--Win32 SDK
- 如何获得设备环境句柄(HDC)--Win32 SDK
- 如何获得设备环境句柄(HDC)--Win32 SDK
- 如何获得窗口句柄以及WIN32+API参考大全
- 如何获得窗口句柄以及WIN32+API参考大全
- WIN32开发:如何获取父进程的句柄
- 获取设备描述表信息
- win32 API窗口句柄 HWND
- 获取设备上下文句柄
- 获取设备环境句柄
- 获取设备的句柄
- android pn推送是出现reomte-server-error(502)
- 麻省理工学院(MIT)研究生学习指导—— 怎样做研究生(下)
- 在网络编程的时候使用非阻塞的connect
- keepalived源码浅析——sock
- Android之TextView实现文字过长时省略部分或者滚动显示
- 如何获取设备描述表句柄--WIN32 api
- 沈志华:中苏60年代分裂的起源
- create schema 与create database的区别
- opencv 直方图 这篇文章是转载的
- jw player去掉logo 二次开发
- Android开发之重力传感器
- oracle 存储过程的基本语法
- java 反射
- 垄断的代价