2009-07-02 14 views
0

私のアプリに印刷機能を追加しようとしています。 CPrintDialogを表示して、プリンタオプションを取得します。印刷範囲オプションを有効にするにはどうすればよいですか?ダイアログをdoModal()すると、現在このオプションは無効になっています。CPRintDialogで印刷範囲の選択ができません

答えて

1

あなたはどのような議論をCPrintDialogコンストラクタに渡していますか?コンストラクタは、あなたが「dwFlagsパラメータ」引数の値を指定しない場合ので、あなたはそれらのデフォルトのフラグを取得します

CPrintDialog(BOOL bPrintSetupOnly, 
    DWORD dwFlags = PD_ALLPAGES|PD_USEDEVMODECOPIES|PD_NOPAGENUMS| 
        PD_HIDEPRINTTOFILE|PD_NOSELECTION, 
    CWnd* pParentWnd = NULL); 

として宣言されています。デフォルトのフラグにはPD_NOPAGENUMSが含まれているため、ページ選択コントロールは無効になります。また、ページ選択コントロールが機能するには、最大ページ番号も設定する必要があります。コードを何かに変更してみてください

CPrintDialog dlg(FALSE, 
    PD_ALLPAGES|PD_USEDEVMODECOPIES|PD_HIDEPRINTTOFILE|PD_NOSELECTION); 
dlg.m_pd.nMaxPage = 100; 
dlg.DoModal(); 
+0

運がない。テストプロジェクトでこれを試しましたか?リリースビルドでも動作しないようです。それがあなたのために働くかどうか私に教えてください。私は範囲の選択を処理する特別な方法があると思う、私はどこかに読んで覚えている(想像する)。 Btw、私のプロジェクトは、doc/viewに基づいていないし、ダイアログベースのアプリケーションだけです。これが理由だろうか?あなたの助けに感謝します。 –

+0

私は実際にそれをテストしていませんでした、それについて申し訳ありません。今私は、私はあなたがまた、これらのコントロールを有効にするための最大ページ番号を設定する必要があることがわかります:これを反映する上記の私の答えを編集し、少なくとも私の作品です。 問題はDocViewを使用していないことに関連していません.CPrintDialog自体は、Windowsのネイティブ印刷ダイアログを囲む薄いラッパーです。 DocViewを使わないで実際に印刷するのは聞こえるかもしれませんが、それは別の問題です... – DavidK

0

印刷コードは印刷されるページ数を設定していますか?私は手元にコードはありませんが、OnPreparePrintDC()などのm_MaxPageを設定するか、引数として取得するオブジェクトのメンバであると思います。

関連する問題