描述
CreateDC功能使用指定的名称为设备创建设备上下文(DC)。
C++ 语法
HDC CreateDC( __in LPCTSTR lpszDriver, __in LPCTSTR lpszDevice, __in LPCTSTR lpszOutput, __in const DEVMODE* lpInitData ); |
PowerBASIC 语法
FUNCTION CreateDCA ( _ BYREF lpszDriver AS ASCIIZ, _ BYREF lpszDevice AS ASCIIZ, _ BYREF lpszOutput AS ASCIIZ, _ BYREF lpInitData AS DEVMODEA _ ); |
Unicode版本:
FUNCTION CreateDCW ( _ BYREF lpszDriver AS WSTRINGZ, _ BYREF lpszDevice AS WSTRINGZ, _ BYREF lpszOutput AS WSTRINGZ, _ BYREF lpInitData AS DEVMODEW _ ); |
参数
lpszDriver
Windows 95/98 / Me:lpszDriver参数可以为NULL,WINSPL16(打印提供商)或(要获取显示器DC),它可以是以空值终止的字符串DISPLAY或特定显示设备的设备名称。如果lpszDevice指定了特定设备,则必须为lpszDriver使用NULL。
Windows NT 4.0:指向空值终止的字符串的指针,指定DISPLAY或打印提供程序的名称,通常为WINSPOOL。
Windows 2000 / XP / Vista / Windows 7:指向指定DISPLAY或特定显示设备的名称或打印提供者的名称(通常为WINSPOOL)的以空值终止的字符串的指针。
lpszDevice
[in]指向指定正在使用的特定输出设备名称的以null结尾的字符串的指针,如打印管理器(例如,Epson FX-80)所示。它不是打印机型号名称。必须使用lpszDevice参数。
要获取显示的有效名称,请调用EnumDisplayDevices.
如果lpszDriver为DISPLAY或特定显示设备的设备名称,则lpszDevice必须为NULL或相同的设备名称。如果lpszDevice为NULL,则为主显示设备创建DC。
Windows NT 3.51和Windows NT 4.0:只有一个(因此是主要的)显示设备。将lpszDevice设置为NULL。
Windows 2000及更高版本:如果系统上有多个监视器,则调用CreateDC(“DISPLAY”,BYVAL%NULL,BYVAL%NULL,BYVAL%NULL)将创建一个覆盖所有监视器的DC。
lpszOutput
此参数被忽略,应设置为NULL。它仅用于与16位Windows兼容。
lpInitData
[in]指向DEVMODE结构的指针,其中包含设备驱动程序的特定于设备的初始化数据。DocumentProperties函数检索为指定设备填写的此结构。如果设备驱动程序要使用用户指定的默认初始化(如果有),则lpInitData参数必须为NULL。
如果lpszDriver为DISPLAY,则lpInitData必须为NULL。使用显示设备的当前DEVMODE.
返回值
如果功能成功,则返回值是指定设备的DC的句柄。
如果函数失败,返回值为NULL。对于DEVMODE结构而言,该函数将返回NULL,而不是当前的DEVMODE.
Windows NT / 2000 / XP / Vista / Windows 7:要获取扩展错误信息,请调用GetLastError.
备注
请注意,DC的句柄只能由单个线程在任何时间使用。
有关参数lpszDriver和lpszDevice,请调用EnumDisplayDevices获取显示的有效名称。
当您不再需要DC时,请调用DeleteDC功能。
Windows 2000 / XP / Vista / Windows 7:如果lpszDriver或lpszDevice为DISPLAY,则调用CreateDC的线程拥有创建的HDC。当线程被破坏时,HDC不再有效。因此,如果创建HDC并将其传递给另一个线程,则退出第一个线程,第二个线程将无法使用HDC。
ICM:要启用ICM,请将DEVMODE结构(pInitData参数指向)的dmICMMethod成员设置为适当的值。
Windows 95/98 / Me:Microsoft Layer for Unicode支持CreateDCW.
引用文件 #INCLUDE Once
WinGdi.inc(包括Windows.inc)