### 函数功能

该函数通过使用指定的名字为一个设备创建设备上下文环境。

### 函数原型

HDC CreateDC(LPCTSTR lpszDrive, LPCTSTR lpszDevice, LPCTSTR lpszOutput, CONST DEVMODE *lplnitData)；

### 参数

lpszDriver：
Windows NT：指向一个以Null结尾的字符串的指针，该字符串为显示驱动指定DISPLAY或者指定一个打印驱动程序名，通常为WINSPOOL。
Windows 95和Windows 98：在基于32位的应用程序中，该参数被忽略或者为Null。但有一个例外，可以通过指定以null结尾的DISPLAY来得到一个显示设备上下文环境，如果该参数为DISPLAY。其他所有的参数必须为Null。
lpszDevice：指向一个以null结尾的字符串的指针，该字符串指定了正在使用的特定输出设备的名字，它不是打印机模式名。LpszDevice参数必须被使用。
lpszOutput：该参数在32位应用中被忽略；并置为Null，它主要是为了提供与16位应用程序兼容，更多的信息参见下面的注释部分。
LplnitData：指向包含设备驱动程序的设备指定初始化数据的DEVMODE结构的指针，DocumentProperties函数检索指定设备获取已填充的结构，如果设备驱动程序使用用户指定的缺省初始化值。则lplnitData参数必须为Null。

### 返回值

成功，返回值是特定设备的设备上下文环境的句柄；失败，返回值为Null。
Windows NT：若想获得更多错误信息，可调用GetLastError函数。
注释：16位的Windows应用程序使用lpszOutput参数指定一通讯口的名字或者指定打印到文件，基于32位的Windows应用程序不需要指定通讯口的名字，32位应用程序使可以通过调用StartDoc函数来完成打印到文件的功能，在调用StartDoc函数时，使用DOCINFO结构。该结构的lpszOutput成员指定了输出文件名的路径。当不再需要该设备上下文环境时可调用DeleteDc函数删除它。
ICM：通过设置DEVMODE结构（由plnitDufa参数指定）的dmlCMMethod元素为合适值，可使ICM激活。
Windows CE：如果没有给lpszDriver参数驱动程序名，则Windows返回一个显示设备上下文环境，Windows CE忽略lpszDevice参数，Windows CE把lplnitData和lpszOutput参数传送给驱动程序而不做任何修改。

### 速查

Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：2.0及以上版本；头文件：wingdi.h；库文件：gdi32.lib，Unicode：在Windows NT上实现为Unicode和ANSI两种版本。