【问题标题】:Is dmPaperSize=DMPAPER_USER the same as dmPaperSize=0?dmPaperSize=DMPAPER_USER 是否与 dmPaperSize=0 相同?
【发布时间】:2012-02-02 16:29:23
【问题描述】:

我在DEVMODE docs 中看到了这一段让我感到困惑。

dmPaperSize

仅适用于打印机设备,选择要打印的纸张尺寸。 如果纸张的长度和宽度,此成员可以设置为零 都由 dmPaperLength 和 dmPaperWidth 成员设置。除此以外, dmPaperSize 成员可以设置为更大的设备特定值 大于或等于 DMPAPER_USER 或以下预定义之一 价值观。

他们说只有在 dmPaperSize=0 时才使用 dmPaperLength 和 dmPaperWidth。他们谈论它的方式,似乎 dmPaperLength 和 dmPaperWidth 不应该与 DMPAPER_USER 一起使用。

这就是我感到困惑的地方。我认为 DMPAPER_USER 意味着使用自定义页面大小。它与指定 0 不同吗?如果 dmPaperLength 和 dmPaperWidth 不能与 DMPAPER_USER 一起使用,如何指定自定义尺寸?

【问题讨论】:

    标签: c++ winapi printing


    【解决方案1】:

    好像有一个Bug in the documentation

    根据The folks over at codeguru,您应该使用 DMPAPER_USER 而不是 0。该讨论线程中有许多代码示例。

    【讨论】:

      【解决方案2】:

      根据您提供的文档 sn-p 判断,DMPAPER_USER 被描述为“设备特定值”。对我来说,这意味着该值的解释留给打印机驱动程序本身,而 dmPaperLength 和 dmPaperWidth 的使用将取决于驱动程序。

      【讨论】:

      • 哦,现在说得通了。所以 DMPAPER_USER 实际上就像 WM_USER 用于消息一样 - 它表示可用于打印机特定纸张尺寸的范围。谢谢!
      • 我刚刚看到这个问题的第二个答案。看来是对的。
      • 根据same CodeGuru thread 帖子#11,我认为Mark 的答案是正确的——一些驱动程序可能使用DMPAPER_USER,一些驱动程序可能使用291(或32767 在我的情况下)
      猜你喜欢
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      相关资源
      最近更新 更多