一.GDI和DC简介
GDI即Graphics Device Interface --图形设备接口,是Windows API的一个重要组成部分。它是Windows图形显示程序与实际物理设备之间的桥梁,GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)中进行操作。可以说,没有GDI,就没有今天绚烂多彩的windows操作系统
DC即Device Context--设备环境。在GDI中,DC即表示程序可以进行输出操作的环境,比如窗口。
知道了这两个概念,其实输出文字图像操作也就很简单了,就是获取设备环境的句柄,通过GDI函数进行输出文字或者绘图操作。
二.获取设备环境
获取设备环境有两种方式:
1.通过BeginPaint()函数
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
//使用GDI函数
EndPaint (hwnd, &ps) ;
return 0 ;
2.通过GetDC()函数
case WM_PAINT://绘图消息
hdc = GetDC(hwnd);
//使用GDI函数
ReleaseDC(hwnd, hdc);
break;
两种方式都有一个共同的特点,都是成双成对的函数,BeginPaint()之后需要EndPaint(),GetDC()之后需要ReleaseDC()函数
即在获取了设备环境,输出之后,需要将设备环境释放,如果不释放,其他函数则不能再对相应设备环境进行操作。
还有一点,一般在WM_PAINT消息中,使用BeginPaint()函数,在WM_PAINT消息之外,如果还想要在屏幕上输出,那么就用GetDC()函数。
三.输出文字
最常用的输出文字的函数是TextOut函数,定义如下:
HDC hdc, // 设备描述表句柄
int nXStart, // 字符串的开始位置 x坐标
int nYStart, // 字符串的开始位置 y坐标
LPCTSTR lpString, // 字符串
int cbString // 字符串中字符的个数
);
代码如下:
case WM_PAINT://绘图消息
hdc = GetDC(hwnd);
TextOut(hdc, 100, 100, L"hello Windows", strlen("hello Windows"));
ReleaseDC(hwnd, hdc);
break;
运行结果: