识别打印机的颜色功能
重要
新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。
有关详细信息,请参阅新式打印平台和打印支持应用设计指南。
为了区分彩色和非彩色(单色或灰度)设备,Windows 2000 及其后基于 NT 的操作系统版本会调用 DrvDeviceCapabilities 函数,并在调用中传递 DC_COLORDEVICE 常量。 如果设备支持彩色,则此函数会返回 1;如果设备输出单色或灰度,则此函数会返回 0。 建议所有打印机驱动程序都支持为 DC_COLORDEVICE 常量调用 DrvDeviceCapabilities。
对于驱动程序而言,实现 DrvDeviceCapabilities 函数非常重要。 否则,操作系统就很难区分彩色和非彩色设备,原因如下:
调用 GetDeviceCaps 函数(在 Windows SDK 文档中进行介绍)时,如果传递 NUMCOLORS 常量,对于大多数非彩色设备,返回值通常小于或等于 2,而对于彩色设备,返回值则大于 2。 操作系统无法区分单色和灰度设备。
DEVMODEW 结构的 dmColor 成员的值并非判断设备是彩色设备还是非彩色设备的可靠指标。 某些打印机驱动程序会将此成员设置为 DMCOLOR_COLOR,即使对于无法打印彩色的设备也是如此。