CPrintDialog クラス
更新 : 2007 年 11 月
Windows のコモン ダイアログ ボックスである [印刷] ダイアログで提供されるサービスをカプセル化したものです。
class CPrintDialog : public CCommonDialog
解説
印刷のコモン ダイアログ ボックスは、Windows の標準に従った [印刷] および [プリンタの設定] のダイアログ ボックスを実装するための簡単な方法を提供しています。
メモ : |
---|
CPrintDialogEx クラスは、Windows 2000 の [印刷] プロパティ シートに提供されるサービスをカプセル化します。詳細については、「CPrintDialogEx クラス の概要」を参照してください。 |
CPrintDialog の機能は、印刷とページの両方を設定するためのコモン ダイアログ ボックスを提供するための CPageSetupDialog, でも提供されます。
アプリケーションの印刷処理の大部分をフレームワークに任せることができます。フレームワークを使うと、印刷時に Windows のコモン ダイアログ ボックスの [印刷] ダイアログを自動的に表示します。アプリケーションの印刷処理をフレームワークに任せることができますが、独自の印刷処理ダイアログ ボックスでコモン ダイアログ ボックスをオーバーライドすることもできます。印刷処理のためのフレームワークの使い方の詳細については、「印刷」を参照してください。
フレームワークを利用せずに、作ったアプリケーションで印刷処理を行う場合は、提供されているコンストラクタで CPrintDialog クラスを構築して "そのまま" の形で利用できます。または、CPrintDialog クラスから独自のダイアログ クラスを派生し、必要に応じたコンストラクタを作成することもできます。いずれの場合も、これらのダイアログ ボックスは CCommonDialog クラスから派生したものなので、標準の MFC のダイアログ ボックスと同等の動作をします。
CPrintDialog オブジェクトを使うには、まず CPrintDialog コンストラクタを使ってオブジェクトを作成します。ダイアログ ボックスが作成された後は、ダイアログ ボックスのコントロールを初期化するために m_pd 構造体の任意の値で設定または変更ができます。m_pd 構造体の型は、PRINTDLG です。この構造体の詳細については、Windows SDK を参照してください。
m_pd で hDevMode や hDevNames メンバの独自のハンドルを用意しないときは、ダイアログ ボックスを終了するときにハンドルを解放するために GlobalFree 関数を呼び出します。CWinApp::OnFilePrintSetup が提供するフレームワークの [プリンタの設定] の実装を使っているときは、このハンドルを解放する必要はありません。このハンドルは CWinApp が管理し、CWinApp のデストラクタが解放します。CPrintDialog を単独で使っているときのみ、このハンドルを解放する必要があります。
ダイアログ ボックスのコントロールを初期化した後は、ダイアログ ボックスを表示し、ユーザーが印刷オプションを選択できるように DoModal メンバ関数を呼び出します。DoModal メンバ関数は、[OK] をクリックした (IDOK) か [キャンセル] をクリックした (IDCANCEL) かを返します。
DoModal 関数が IDOK を返した場合は、入力された情報を取得するために CPrintDialog メンバ関数の 1 つを使用できます。
CPrintDialog::GetDefaults メンバ関数は、ダイアログ ボックスを表示せずに現在の既定のプリンタを取得するのに使います。このメンバ関数はユーザーの操作を必要としません。
ダイアログ ボックスの初期化中にエラーが発生したかどうかを確認し、そのエラーについての情報を得るために、Windows の CommDlgExtendedError 関数を使用できます。この関数の詳細については、Windows SDK を参照してください。
CPrintDialog は、Windows Versions 3.1 以降で配布される COMMDLG.DLL ファイルを使います。
ダイアログ ボックスをカスタマイズするには、CPrintDialog からクラスを派生し、独自のダイアログ テンプレートを作成します。さらに、外部のコントロールからの通知メッセージを処理するためにメッセージ マップを追加します。処理されないメッセージはすべて基本クラスに送られます。フック関数のカスタマイズは必要ありません。
ダイアログ ボックスが [印刷] か [プリンタの設定] かによって同じメッセージに対して異なる処理を行うためには、ダイアログ ボックスごとにクラスを派生します。[印刷] ダイアログ ボックス内の [プリンタの設定] がクリックされたときに、新しいダイアログ ボックスの作成に移るために Windows の AttachOnSetup 関数もオーバーライドします。
CPrintDialog の使い方の詳細については、「コモン ダイアログ クラス」を参照してください。
必要条件
ヘッダー : afxdlgs.h
参照
処理手順
DIBLOOK サンプル : DIB およびカラー パレットの使用例