获取设备内容句柄的方法,HDC hDc;在处理WM_PAINT消息里
1. PAINTSTRUCT Ps;
hDc = BeginPaint(hwnd,&Ps); //获取设备环境句柄
EndPaint(hwnd,&Ps);//释放资源
处理非WM_PAINT(如在WM_CREATE)消息里使用以下函数加载设备
2.使用GetDC()返回句柄可以在整个显示区域绘图,在处理非WM_PAINT消息里
hDc = GetDC(hwnd); //获取句柄
ReleaseDC(hwnd,hDc); //释放设备资源
3.使用GetWindowDC()返回设备内容句柄,可以在程序显示的整个窗口上绘图,包括标题列、菜单、滚动条和框架
GetWindowDC(hwnd);
ReleaseDC(hwnd,hDc);
4. 使用CreateDC()创建设备内容并返回句柄,
函数原型:HDC CreateDC(LPCTSTR lpszDrive,LPCTSTR lpszDevice, LPCTSTR lpszOutput, CONST DEVMODE *lplnitData);
lpszDriver: Windows NT:指向一个以Null结尾的字符串的指针,该字符串为显示驱动指定DISPLAY或者指定一个打印驱动程序名,通常为WINSPOOL。
在基于32位的应用程序中,该参数被忽略或者为Null。但有一个例外,可以通过指定以null结尾的DISPLAY来得到一个显示设备上下文环境,如果该参数为DISPLAY,
其他所有的参数必须为Null。
lpszDevice:指向一个以null结尾的字符串的指针,该字符串指定了正在使用的特定输出设备的名字,它不是打印机模式名。LpszDevice参数必须被使用。
lpszOutput:该参数在32位应用中被忽略;并置为Null,它主要是为了提供与16位应用程序兼容,更多的信息参见下面的注释部分。
LplnitData:指向包含设备驱动程序的设备指定初始化数据的DEVMODE结构的指针,DocumentProperties函数检索指定设备获取已填充的结构,如果设备驱动程序使用
用户指定的缺省初始化值。则lplnitData参数必须为Null。返回值:成功,返回值是特定设备的设备上下文环境的句柄;失败,返回值为Null。
例如要获取整个屏幕的设备内容句柄
hDc = CreateDC(_T(“DISPLAY”),NULL,NULL,NULL);
DeleteDC(hDc);
5. 有时您只是需要取得关于某设备内容的一些信息而并不进行任何绘画,在这种情况下,您可以使用CreateIC来取得一个”信息内容”的句柄,
hDc = CreateIC(_T(“DISPLAY”),NULL,NULL,NULL);
不能用这个信息内容句柄往设备上写东西;
使用位图时,取得一个”内存设备内容”有时是有用的
hdcMem = CreateCompatibleDC (hdc) ;
DeleteDC (hdcMem) ;
可以将位图选进内存设备内容,然后使用GDI函数在位图上绘画