1

我正在做一个项目,我需要为设备的打印操作进行编程。它有WIN CE 6.0。我正在使用 Visual Studio 2005 (MFC)。打印机可以是任何 PCL 兼容的打印机。

目前,为了获得打印机 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 这样的结构?任何相关的例子都会很有帮助。

亲切的问候, Aftab

4

1 回答 1

0

这是古老的,但以防万一有人发现它仍然有用。

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

于 2017-03-16T10:23:35.557 回答