图形设备接口(GDI,Graphics Device Interface)负责在显示器和打印机上显示图形。GDI 是由几
百个函数和一些相关的数据类型、宏和结构构成的。Windows 98/NT 中的图形主要由GDI32.DLL 动态链接库输出的函数来处理。在Windows 98 中,这个GDI32.DLL 实际是利用16 位GDI.EXE 动态链接库来执行函数。在Windows NT 中,GDI.EXE只用于16 位的程序。因为PC 兼容机种上可以连接许多种不同的图形图像设备,所以GDI 的主要目的之一是支持与设备无关的图形。Windows 程序应该能够毫无困难地在Windows 支持的任意一种图形输出设备上执行,GDI 通过将程序和不同输出设备的特性隔离开来的方法达到这一目的。当用户想在一个图形输出设备上绘图时,首先必须获得一个设备内容的句柄。将句柄传回给程序时,Windows 就给了用户使用设备的权限,然后在GDI 函数中将这个句柄作为一个参数,用来标识在其上进行绘图的设备。设备内容中包含许多确定GDI 函数如何在设备上工作的属性,这些属性允许传递给GDI 函数的参数只包含起始坐标或者尺寸信息,而不必包含Windows 在设备上显示对象时需要的所有其他信息。例如,当调用TextOut 时,只需要在函数中给出设备内容句柄、起始坐标、文字和文字的长度,而不必指定字体、文字颜色、文字后面的背景色彩以及字符间距。因为这些属性都是设备内容的一部分。设备内容
Windows 提供了几种取得设备内容句柄的方法。如果在处理一个消息时取得了设备内容句柄,应该在退出窗口函数之前释放它。一旦释放了句柄,它就不再有效了。但是对于打印机设备内容句柄,规则就没有这么严格。最常用的取得并释放设备内容句柄的方法是,在处理WM_PAINT 消息时,使用BeginPaint 和EndPaint:hdc = BeginPaint (hwnd, &ps) ;……………………EndPaint (hwnd, &ps) ;