gpt4 book ai didi

c++ - MFC CView::OnFilePrint 不会打印一份以上

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:19 25 4
gpt4 key购买 nike

我有一个派生自调用 OnFilePrint() 的 CView 的类,但无论我在打印对话框中输入多少拷贝,似乎都只会打印一份拷贝。这是一个已知错误,还是我做错了什么?

我可能会创建自己的 CPrintDialog,但我不太确定如何让它按原样实际进行“打印”。类似于以下内容?

CString PrinterName;
CString SelectedPrinter;
CPrintDialog dlg(FALSE);

int nCopies = 1;
if( IDOK != dlg.DoModal())
return;
nCopies = dlg.GetCopies();

for(int i=0;i<nCopies;i++)
//do something??

我错过了什么?此外,如果用户选择 pdf 打印机,我将如何防止代码提示用户输入文件保存位置“nCopies”次?

感谢您的帮助!

最佳答案

我原以为任何现代版本的 Windows 都可以处理打印处理器中的拷贝并减轻程序的负担(就像 strip 打印机一样)。但您的问题表明情况并非如此。

我的内存有些模糊,但我记得,有些打印机(或它们的驱动程序)会进行复印,但其他打印机则需要程序来完成。该对话框通过在 DEVMODE 中设置 dmCopies 字段来捕获用户的意图。

然后程序应该检查驱动程序是否支持多个拷贝。如果是,只需传入 DEVMODE。如果没有,那么您需要一个类似于您所显示的循环(并将 DEVMODE dmCopies 字段重置为 1)。

我忘了怎么问驱动是否支持拷贝了。可能与检查默认 DEVMODE 的 dmFields 中是否设置了 DM_COPIES 位有关。我确实记得在 16 位时代的糟糕日子里,许多驱动程序声称支持拷贝,但实际上并没有这样做。我当时处理的应用程序有一个司机列表,他们说他们可以复制但不能。

关于c++ - MFC CView::OnFilePrint 不会打印一份以上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8391801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com