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