c++ - 如何设置来自DeviceCapability的纸质表单?

标签 c++ winapi printing

我有一台打印机,其中的表单无法通过 EnumForms 检索。 EnumForms 只从打印服务器获取表单。通过带有 DC_PAPERNAMES 参数的 DeviceCapativity,我得到了需要设置的表单(超长纸张)。

我尝试像这样设置表单

wcscpy(pDevMode->dmFormName, L"Super Long Paper");
pDevMode->dmFields |= DM_FORMNAME;
ResetDCW(hPrintDC, pDevMode);

这不起作用。

是否可以获取可以通过 pDevMode->dmPapersize 设置的特定表单的值,或者是否有其他选项可以设置仅使用 显示的表单设备功能

我非常感谢您在正确方向上提出的每一条建议。

这必须在 Windows XP 下工作。

编辑:

程序不应显示对话框。一切都通过代码设置。

最佳答案

找到了解决方案。您必须调用 DeviceCapability 三次。一次使用 DC_PAPERS,一次使用 DC_PAPERNAMES,一次使用 DC_PAPERSIZE。每次调用都会为您提供一个数组,其中包含打印机支持的表单的表单名称、大小和编号(在 DevMode 中设置)。通过这些,您可以设置 DevMode 的 dmPaperSize、dmPaperLengthdmPaperWidth`属性。

关于c++ - 如何设置来自DeviceCapability的纸质表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18015384/

相关文章:

c++ - BFS 的伪代码(来自算法设计,第 2 版)混淆?

C++从带有&返回指向未初始化结构的指针的 vector 获取结构

html - 如何在由控件组成的 Bootstrap 中很好地打印表格?

Javascript 打印函数 - 文件名

c++ - 在 C++ 中将临时变量作为非常量引用传递

c++ - 在 View 中用 ID 替换字符串的简单方法

c++ - 库正常编译时出现链接器错误 (LNK2001)

c# - 为什么关闭使用 AllocConsole 启动的控制台会导致我的整个应用程序退出?我可以改变这种行为吗?

c++ - 终止 protected 防病毒进程

java - 如何使用Java执行Windows 'printto'动词?