CPageSetupDialog クラス
印刷マージンの設定や変更の追加サポートと共に [OLE ページの設定] ダイアログ ボックスにより提供されるサービスをカプセル化します。
構文
class CPageSetupDialog : public CCommonDialog
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CPageSetupDialog::CPageSetupDialog | CPageSetupDialog オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CPageSetupDialog::CreatePrinterDC | 印刷用のデバイス コンテキストを作成します。 |
CPageSetupDialog::D oModal | ダイアログ ボックスを表示し、ユーザーが選択できるようにします。 |
CPageSetupDialog::GetDeviceName | プリンターのデバイス名を返します。 |
CPageSetupDialog::GetDevMode | プリンターの現在の DEVMODE を返します。 |
CPageSetupDialog::GetDriverName | プリンターで使用されるドライバーを返します。 |
CPageSetupDialog::GetMargins | プリンターの現在の余白の設定を返します。 |
CPageSetupDialog::GetPaperSize | プリンターの用紙サイズを返します。 |
CPageSetupDialog::GetPortName | 出力ポート名を返します。 |
CPageSetupDialog::OnDrawPage | 印刷されたページの画面イメージをレンダリングするためにフレームワークによって呼び出されます。 |
CPageSetupDialog::P reDrawPage | 印刷されたページの画面イメージをレンダリングする前に、フレームワークによって呼び出されます。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
CPageSetupDialog::m_psd | オブジェクトをカスタマイズするために使用される CPageSetupDialog 構造体。 |
解説
このクラスは、[印刷設定] ダイアログ ボックスの代わりに使用するように設計されています。
オブジェクトを CPageSetupDialog
使用するには、まずコンストラクターを使用してオブジェクトを CPageSetupDialog
作成します。 ダイアログ ボックスが作成されたら、データ メンバー内の任意の値を m_psd
設定または変更して、ダイアログ ボックスのコントロールの値を初期化できます。 m_psd構造体は PAGE Standard Edition TUPDLG 型です。
ダイアログ ボックス コントロールを初期化した後、メンバー関数を DoModal
呼び出してダイアログ ボックスを表示し、ユーザーが印刷オプションを選択できるようにします。 DoModal
は、ユーザーが OK (IDOK) またはキャンセル (IDCANCEL) ボタンを選択したかどうかを返します。
IDOK が返された場合 DoModal
は、いくつかの CPageSetupDialog
メンバー関数を使用するか、データ メンバーに m_psd
アクセスして、ユーザーが入力した情報を取得できます。
Note
一般的な [OLE ページ設定] ダイアログ ボックスを閉じると、ユーザーが行った変更はフレームワークによって保存されません。 このダイアログ ボックスから永続的な場所 (アプリケーションのドキュメントやアプリケーション クラスのメンバーなど) に値を保存するのは、アプリケーション自体に任されています。
継承階層
CPageSetupDialog
必要条件
ヘッダー: afxdlgs.h
CPageSetupDialog::CPageSetupDialog
オブジェクトを構築するには、この関数を CPageSetupDialog
呼び出します。
CPageSetupDialog(
DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
CWnd* pParentWnd = NULL);
パラメーター
dwFlags
ダイアログ ボックスの設定をカスタマイズするために使用できる 1 つ以上のフラグ。 値は、ビットごとの OR 演算子を使用して結合できます。 これらの値には次の意味があります。
PSD_DEFAULTMINMARGINS ページ余白の最小許容幅をプリンターの最小値と同じに設定します。 PSD_MARGINSフラグとPSD_MINMARGINS フラグも指定されている場合、このフラグは無視されます。
PSD_INWININIINTLMEASURE実装されていません。
PSD_MINMARGINS メンバーで
rtMinMargin
指定された値を、左、上、右、および下の余白の最小許容幅として使用します。 システムは、ユーザーが指定された最小値より小さい幅を入力できないようにします。 PSD_MINMARGINSが指定されていない場合、システムは、プリンターで許可される最小の幅を設定します。PSD_MARGINS 余白コントロール領域をアクティブにします。
PSD_INTHOUSANDTHSOFINCHES ダイアログ ボックスの単位を 1/1000 インチ単位で測定します。
PSD_INHUNDREDTHSOFMILLIMETERS ダイアログ ボックスの単位をミリメートルの 1/100 単位で測定します。
PSD_DISABLEMARGINS 余白ダイアログ ボックス コントロールを無効にします。
PSD_DISABLEPRINTER プリンター ボタンを無効にします。
PSD_NOWARNING 既定のプリンターがない場合に警告メッセージが表示されないようにします。
PSD_DISABLEORIENTATION ページの向きダイアログ コントロールを無効にします。
CPageSetupDialog
PSD_RETURNDEFAULT ダイアログ ボックスを表示せずに、システムの既定のプリンター用に初期化された DEVMODE および DEVNAMES 構造体を返します。 両方hDevNames
hDevMode
とも NULL であると見なされます。それ以外の場合、関数はエラーを返します。 システムの既定のプリンターが古いプリンター ドライバー (Windows バージョン 3.0 より前) でサポートされている場合は、NULL のみがhDevNames
返されますhDevMode
。PSD_DISABLEPAPER 用紙選択コントロールを無効にします。
PSD_SHOWHELP ダイアログ ボックスに [ヘルプ] ボタンが表示されます。 このフラグが指定されている場合、メンバーは
hwndOwner
NULL にすることはできません。PSD_ENABLEPAGEStandard Edition TUPHOOK で指定された
lpfnSetupHook
フック関数を有効にします。PSD_ENABLEPAGEStandard Edition TUPTEMPLATE によって識別される
hInstance
ダイアログ テンプレート ボックスを使用して、オペレーティング システムがダイアログ ボックスを作成しますlpSetupTemplateName
。PSD_ENABLEPAGEStandard Edition TUPTEMPLATEHANDLE プリロードされたダイアログ ボックス テンプレートを含むデータ ブロックを識別することを
hInstance
示します。 このフラグがlpSetupTemplateName
指定されている場合、システムは無視します。PSD_ENABLEPAGEPAINTHOOK で指定したフック関数を
lpfnPagePaintHook
有効にします。PSD_DISABLEPAGEPAINTING ダイアログ ボックスの描画領域を無効にします。
pParentWnd
ダイアログ ボックスの親または所有者へのポインター。
解説
DoModal 関数を使用して、ダイアログ ボックスを表示します。
例
void CMyRichEditView::OnPageSetupDlg()
{
CPageSetupDialog psd(PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS |
PSD_ENABLEPAGEPAINTHOOK, this);
// Initialize margins
psd.m_psd.rtMargin.top = 1000;
psd.m_psd.rtMargin.left = 1250;
psd.m_psd.rtMargin.right = 1250;
psd.m_psd.rtMargin.bottom = 1000;
psd.m_psd.lpfnPagePaintHook = (LPPAGEPAINTHOOK)PaintHook;
if (IDOK == psd.DoModal())
{
// Propagate changes to the app
AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);
}
else
{
TRACE(_T("CommDlgExtendedError returned error %d from ")
_T("CPageSetupDialog::DoModal().\n"),
(int)CommDlgExtendedError());
}
}
CPageSetupDialog::CreatePrinterDC
DEVMODE 構造体と DEVNAMES 構造体からプリンター デバイス コンテキストを作成します。
HDC CreatePrinterDC();
戻り値
新しく作成されたプリンター デバイス コンテキスト (DC) を処理します。
CPageSetupDialog::D oModal
この関数を呼び出して、Windows の [OLE ページのセットアップ] ダイアログ ボックスを表示し、印刷余白、用紙のサイズと向き、印刷先プリンターなど、さまざまな印刷設定オプションを選択できるようにします。
virtual INT_PTR DoModal();
戻り値
IDOK または IDCANCEL。 IDCANCEL が返された場合は、Windows CommDlgExtendedError 関数を呼び出して、エラーが発生したかどうかを判断します。
IDOK と IDCANCEL は、ユーザーが [OK] または [キャンセル] ボタンを選択したかどうかを示す定数です。
解説
さらに、ユーザーは、ネットワークの場所や、選択したプリンターに固有のプロパティなどのプリンターのセットアップ オプションにアクセスできます。
構造体のメンバーを設定してさまざまな [ページ設定] ダイアログ オプションを m_psd
初期化する場合は、呼び出す DoModal
前に、ダイアログ オブジェクトが構築された後に初期化する必要があります。 呼び出した DoModal
後、他のメンバー関数を呼び出して、ユーザーがダイアログ ボックスに入力した設定または情報を取得します。
ユーザーが入力した現在の設定を伝達する場合は、CWinApp::SelectPrinter を呼び出します。 この関数は、オブジェクトから情報を CPageSetupDialog
受け取り、適切な属性を持つ新しいプリンター DC を初期化して選択します。
AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);
例
CPageSetupDialog::CPageSetupDialog の例を参照してください。
CPageSetupDialog::GetDeviceName
現在選択されているプリンターの名前を取得するには、後 DoModal
でこの関数を呼び出します。
CString GetDeviceName() const;
戻り値
オブジェクトによって使用される CPageSetupDialog
デバイス名。
CPageSetupDialog::GetDevMode
呼び出し後にこの関数を呼び出 DoModal
して、オブジェクトのプリンター デバイス コンテキストに関する情報を CPageSetupDialog
取得します。
LPDEVMODE GetDevMode() const;
戻り値
DEVMODE データ構造。印刷ドライバーのデバイスの初期化と環境に関する情報が含まれます。 Windows SDK で説明されている Windows GlobalUnlock 関数を使用して、この構造体によって取得されたメモリのロックを解除する必要があります。
CPageSetupDialog::GetDriverName
DoModal を呼び出してシステム定義プリンター デバイス ドライバーの名前を取得した後、この関数を呼び出します。
CString GetDriverName() const;
戻り値
CString
システム定義ドライバー名を指定します。
解説
CDC::CreateDC のCString
呼び出しで返されるGetDriverName
オブジェクトへのポインターを値lpszDriverName
として使用します。
CPageSetupDialog::GetMargins
プリンター デバイス ドライバーの余白を取得する DoModal
呼び出しの後に、この関数を呼び出します。
void GetMargins(
LPRECT lpRectMargins,
LPRECT lpRectMinMargins) const;
パラメーター
lpRectMargins
現在選択されているプリンターの印刷余白 (1/1000 インチまたは 1/100 mm) を表す RECT 構造体または CRect オブジェクトへのポインター。 この四角形に関心がない場合は、このパラメーターに NULL を渡します。
lpRectMinMargins
RECT
現在選択されているプリンターの最小印刷余白 (1/1000 インチまたは 1/100 mm) を表す構造体またはCRect
オブジェクトへのポインター。 この四角形に関心がない場合は、このパラメーターに NULL を渡します。
CPageSetupDialog::GetPaperSize
この関数を呼び出して、印刷用に選択した用紙のサイズを取得します。
CSize GetPaperSize() const;
戻り値
印刷用に選択された用紙のサイズ (1/1000 インチまたは 1/100 mm) を含む CSize オブジェクト。
CPageSetupDialog::GetPortName
現在選択されているプリンター ポートの名前を取得するには、呼び出し後にこの関数を呼び出 DoModal
します。
CString GetPortName() const;
戻り値
現在選択されているプリンター ポートの名前。
CPageSetupDialog::m_psd
PAGE Standard Edition TUPDLG 型の構造体。メンバーがダイアログ オブジェクトの特性を格納します。
PAGESETUPDLG m_psd;
解説
オブジェクトをCPageSetupDialog
構築した後、メンバー関数を呼び出す前に、ダイアログ ボックスのさまざまな側面をDoModal
設定するために使用m_psd
できます。
データ メンバーを m_psd
直接変更する場合は、既定の動作をオーバーライドします。
PAGE Standard Edition TUPDLG 構造体の詳細については、Windows SDK を参照してください。
CPageSetupDialog::CPageSetupDialog の例を参照してください。
CPageSetupDialog::OnDrawPage
印刷されたページの画面イメージを描画するためにフレームワークによって呼び出されます。
virtual UINT OnDrawPage(
CDC* pDC,
UINT nMessage,
LPRECT lpRect);
パラメーター
pDC
プリンター デバイス コンテキストへのポインター。
nMessage
現在描画されているページの領域を示すメッセージを指定します。 以下のいずれかを指定できます。
WM_PSD_FULLPAGERECT ページ領域全体。
[現在の最小余白] をWM_PSD_MINMARGINRECTします。
現在の余白をWM_PSD_MARGINRECTします。
WM_PSD_GREnterprise Edition KTEXTRECT ページの内容。
WM_PSD_ENVSTAMPRECT切手の表現のために予約されたエリア。
戻り値の住所表現のWM_PSD_YAFULLPAGERECT領域。 この領域は、サンプル ページ領域の端まで拡張されます。
lpRect
描画領域の座標を 含む CRect オブジェクトまたは RECT オブジェクトへのポインター。
戻り値
処理された場合は 0 以外の値。それ以外の場合は 0。
解説
このイメージは、一般的な [OLE ページ設定] ダイアログ ボックスの一部として表示されます。 既定の実装では、テキストのページのイメージが描画されます。
イメージの特定の領域またはイメージ全体の描画をカスタマイズするには、この関数をオーバーライドします。 これを行うには、ステートメントと nMessage case
の値をチェックステートメントを使用switch
します。 たとえば、ページ イメージの内容のレンダリングをカスタマイズするには、次のコード例を使用できます。
switch (nMessage)
{
case WM_PSD_GREEKTEXTRECT:
DrawMyImage(pDC, lpRect); //draws my special graphic
return 1;
default:
return CPageSetupDialog::OnDrawPage(pDC, nMessage, lpRect);
}
nMessage のすべてのケースを処理する必要はありません。 イメージの 1 つのコンポーネント、イメージの複数のコンポーネント、または領域全体を処理することを選択できます。
CPageSetupDialog::P reDrawPage
印刷されたページの画面イメージを描画する前に、フレームワークによって呼び出されます。
virtual UINT PreDrawPage(
WORD wPaper,
WORD wFlags,
LPPAGESETUPDLG pPSD);
パラメーター
wPaper
用紙サイズを示す値を指定します。 この値には、DEVMODE 構造体の説明に記載されているDMPAPER_値のいずれかを指定できます。
wFlags
用紙または封筒の向きを示し、プリンターがドット マトリックスか HPPCL (Hewlett Packard プリンター制御言語) デバイスかを示します。 このパラメーターには、次のいずれかの値を指定できます。
横モードの0x001用紙 (ドット マトリックス)
横モードの0x003用紙 (HPPCL)
縦モードの0x005用紙 (ドット マトリックス)
縦モードの0x007用紙 (HPPCL)
横モードの0x00bエンベロープ (HPPCL)
縦モードの0x00d封筒 (ドット マトリックス)
横モードの0x019エンベロープ (ドット マトリックス)
縦モードの0x01f封筒 (ドット マトリックス)
pPSD
PAGESETUPDLG
構造体へのポインター。 PAGE Standard Edition TUPDLG の詳細については、Windows SDK を参照してください。
戻り値
処理された場合は 0 以外の値。それ以外の場合は 0。
解説
イメージの描画をカスタマイズするには、この関数をオーバーライドします。 この関数をオーバーライドして TRUE を返す場合は、イメージ全体を描画する必要があります。 この関数をオーバーライドして FAL Standard Edition を返すと、既定のイメージ全体がフレームワークによって描画されます。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示