【问题标题】:How to check printer can support the many copies?如何检查打印机可以支持多份?
【发布时间】:2016-07-08 07:49:24
【问题描述】:

我在一个项目 MFC 和 WPF(称为 A)中工作。它有一个打印预览视图,还有一个“打印”按钮、一个用于选择打印机的组合框、一个用于复制的旋转控件。它们都是手动创建的。

我按照说明创建了一个项目(称为 B): http://www.functionx.com/visualc/printing/docviewprinting.htm

当我运行这个项目 (B) 时,会自动创建一个带有打印按钮的工具栏。如果我在不支持多份的打印机上打印多份,则会出现一个消息框:

这台打印机不能支持这么多份。

份数将设置为打印机最大 1。

所以它可以检查打印机是否支持多份。

在项目 A 中,我无法检查打印机是否支持多份。我已经按照说明完成了:

http://forums.codeguru.com/showthread.php?97158-How-to-print-multiple-copies

通过使用if(lpdm->dmFields & DM_COPIES)。但是没有影响。

那么你能告诉我如何检查打印机是否支持多份吗?

我在网站上搜索过:

https://support.microsoft.com/en-us/kb/167345

https://support.microsoft.com/en-us/kb/140285

https://www.experts-exchange.com/questions/28603484/How-to-detect-or-better-prevent-print-drivers-making-multiple-copies-in-MS-MFC-C.html

https://msdn.microsoft.com/en-us/library/aa251430(v=vs.60).aspx

但没有任何结果。

问题已解决。

【问题讨论】:

    标签: c++ wpf printing mfc


    【解决方案1】:

    您必须使用DeviceCapabilitiesDC_COPIES 来测试打印机是否支持多份副本

    DeviceCapabilities

    DC_COPIES
    返回设备可以打印的份数。

    例子:

    CPrintDialog prn(FALSE); 
    prn.GetDefaults(); 
    
    CString device = prn.GetDeviceName();
    //hDevNames was locked by CPrintDialog::GetDeviceName()
    GlobalUnlock(prn.m_pd.hDevNames);
    
    CString port = prn.GetPortName();
    //hDevNames was locked by CPrintDialog::GetPortName()
    GlobalUnlock(prn.m_pd.hDevNames);
    
    DWORD copies = DeviceCapabilities(device, port, DC_COPIES, NULL, NULL);
    

    如果不支持多副本,则返回值为1。

    使用DEVMODEDM_COPIES 分配份数。

    【讨论】:

    • 感谢您的帮助。今天我可以在项目中测试(我不能在我家测试)。很抱歉我的延误。
    【解决方案2】:

    为某人提供更多信息。

    从组合框中选择的打印机,我得到PrintCapabilities,然后检查MaxCopyCount

        if (1 == currPrinter.GetPrintCapabilities().MaxCopyCount)
        {
         //The printer doesn't support many copies.
        }
    

    【讨论】:

    • GetPrintCapabilities 据我所知不是 C++ 或 MFC。我认为这是 WPF 解决方案。也许您应该在您的问题中添加 WPF 标签或明确说明。
    • 感谢您的建议,我添加了标签 WPF。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2020-11-15
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多