Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何检查打印机能否支持多份拷贝?_C++_Wpf_Printing_Mfc - Fatal编程技术网

C++ 如何检查打印机能否支持多份拷贝?

C++ 如何检查打印机能否支持多份拷贝?,c++,wpf,printing,mfc,C++,Wpf,Printing,Mfc,我在MFC和WPF项目(称为a)中工作。它有一个打印预览视图,还有一个按钮“打印”,一个用于选择打印机的组合框,一个用于复印的旋转控件。所有这些都是手动创建的 我已经按照说明创建了一个项目(称为B): 当我运行这个项目(B)时,会自动创建一个带有打印按钮的工具栏。如果我在打印机上打印了多份不支持多份的副本,将出现一个消息框: 这台打印机无法支持这么多副本 副本数将设置为打印机最多1份 因此,它可以检查打印机是否支持多份拷贝 在项目A中,我无法检查打印机是否支持多份拷贝。我确实遵守了指示: 使

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

我已经按照说明创建了一个项目(称为B):

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

这台打印机无法支持这么多副本

副本数将设置为打印机最多1份

因此,它可以检查打印机是否支持多份拷贝

在项目A中,我无法检查打印机是否支持多份拷贝。我确实遵守了指示:

使用
if(lpdm->dmFields&DM\u副本)
。但它没有效果

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

我已在以下网站上搜索:

但是没有任何结果


问题已解决。

您必须使用
设备容量
DC\U副本
来测试打印机是否支持多份副本

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


使用
DEVMODE
DM_COPIES
分配拷贝数。

为某人提供更多信息

在组合框中选择打印机后,我将获得
printpabilities
,然后选中
MaxCopyCount

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

谢谢你的帮助。今天我可以在项目中测试(我不能在家中测试)。对我的延迟感到抱歉。据我所知,<代码> GPrPtTrimeStudio不是C++或MFC。我认为这是WPF解决方案。也许你应该在你的问题中添加WPF标签,或者说清楚。谢谢你的建议,我添加了标签WPF。