2012-06-30 62 views
1

我工作的一个项目,我需要从设备打印操作编程。 它有WIN CE 6.0。我正在使用Visual Studio 2005(MFC)。 打印机可以是任何兼容PCL的打印机。阅读DEVMODE结构从注册表

目前,获得打印机DC,我使用的CreateDC()。

hPrinterDC = CreateDC(L"PCL.DLL", L"Any Name", L"LPT1", NULL); 

使用此调用我可以成功打印。 在这里,我将DEVMODE特定的输入参数作为NULL传递。但为了更好地控制这些打印操作,我需要将DEVMODE信息传递给CreateDC()。

对于我计划作出的CreateDC()的调用上面指定生成注册表DEVMODE的具体信息。然后,我可以将此DEVMODE数据从注册表读取到本地变量中,仅修改此变量的必需字段,并将此变量传递给CreateDC()以获取打印机DC,以便进行实际的打印操作。

我避免DEVMODE结构的直接初始化,因为我没有关于DEVMODE例如某些领域的足够信息dmDriverExtra。

我需要知道我怎么能放心地读到这样从注册表DEVMODE一个结构?任何相关的例子都会非常有用。

亲切的问候, 阿夫塔卜

+0

任何直接的DEVMODE初始化相关信息也可以有很大的帮助。我对dmDriverExtra字段(以及DEVMODE后面的驱动程序特定数据,如果需要)特别感兴趣。 – Aftab

回答

0

这是古老的,但以防万一有人认为这仍然是有用的。

的DEVMODE包含私人和公共区域,所以用大小等于sizeof(DEVMODE)分配会排除一些设置。初始化DEVMODE的正确方法是使用DocumentProperties()函数查询其默认状态。它返回最后一个参数设置为零时所需的字节数。