2010-09-14 88 views
2

我遇到DEVMODE结构的dmColor字段有问题。正在读取和写入DEVMODE.dmColor

我的默认打印机是彩色打印机,如果我通过控制面板将打印机属性的默认输出颜色设置为黑白,DEVMODE.dmColor字段总是返回DMCOLOR_COLOR而不是DMCOLOR_MONOCHROME。

即使我默认我的打印机黑白打印机只,DEVMODE.dmColor仍始终返回DMCOLOR_COLOR

所有其他DEVMODE领域,如dmDeviceName,dmCopies,dmDuplex等做工精细。我也尝试使用DeviceCapabilities函数查询DC_COLORDEVICE,微软文档说如果设备支持颜色,它应该返回1,如果不支持则返回-1,如果发生错误,则返回-1。此函数始终返回-1,但由GetLastError返回的错误代码转换为“操作成功完成”。

我在Windows Vista下运行,我在DEVMODE.dmFields中指定了DM_COLOR,有没有人知道为什么会发生这种情况?

谢谢。

回答

1

我已经解决了这个问题,好像颜色设置以及其他设置存储在DEVMODE结构下方的私人驱动器的数据部分。私人数据的大小存储在DEVMODE.dmDriverExtra中。将从打印机属性对话框返回的私人驱动程序数据复制到打印设备已解决问题。

0

这可能是一个驱动程序问题。

我在HP 2840彩色多功能打印机上完全相反:XP专用驱动程序运行良好(允许彩色和单色),但Vista和更高版本不支持它们。
从Vista开始,您需要使用通用HP驱动程序,它始终返回单色。

--jeroen