MFC cview :: onfilePrintは複数のコピーを印刷しません
質問
onfileprint()を呼び出すcviewに由来するクラスがありますが、印刷ダイアログに入力する数に関係なく、1つのコピーのみが印刷されたようです。これは既知のバグですか、それとも私は何か間違ったことをしていますか?
私は潜在的に自分の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は、印刷プロセッサのコピーを処理し、負担のプログラムを緩和することを期待していました(バンディングプリンターと同じように)。しかし、あなたの質問はそうでないことを示唆しています。
私の記憶は錆びていますが、私が思い出すように、いくつかのプリンター(またはそのドライバー)がコピーを作成しますが、他のプリンターはそれを行うためにプログラムを必要とします。ダイアログは、DevModeにDMCOPIESフィールドを設定することにより、ユーザーの意図をキャプチャします。
その後、プログラムはドライバーに確認して、複数のコピーをサポートするかどうかを確認する必要があります。もしそうなら、DevModeを渡すだけです。そうでない場合は、表示したようなループが必要です(DevMode DMCopiesフィールドを1にリセットします)。
コピーをサポートしているかどうかをドライバーに尋ねる方法を忘れています。 DM_COPIESビットがデフォルトのDevModeのDMFieldsに設定されているかどうかを確認することに関係しているかもしれません。私は、悪い古い16ビットの日に、多くのドライバーがコピーをサポートすると主張したが、実際にはそれをしなかったことを覚えています。当時私が取り組んでいたアプリケーションには、コピーを行うことができますが、できなかったと言ったドライバーのリストがありました。