次の方法で共有


[ページ設定] ダイアログ ボックス

ユーザーが印刷ページの次の属性を設定できるようにするモーダル ダイアログ ボックスを表示します。

  • 用紙の種類 (封筒、法律、手紙など)
  • 紙源 (手動フィード、トラクターフィード、シートフィーダーなど)
  • ページの向き (縦または横)
  • ページ余白の幅

PAGESETUPDLG 構造体を初期化し、その構造体を PageSetupDlg 関数に渡すことで、ページセットアップ ダイアログ ボックスを作成して表示します。 ただし、ダイアログ ボックスに表示される属性は、プリンターの機能によって異なります。 次の図は、一般的な ページセットアップ ダイアログ ボックスを示しています。

[ページ設定] ダイアログ ボックスの

ユーザーが [OK] ボタンをクリックすると、PageSetupDlg は、PAGESETUPDLG 構造体のさまざまなメンバーを設定してユーザーの選択を指定した後、TRUE を返します。 ptPaperSize および rtMargin メンバー には、ユーザーによって指定された値が含まれます。 hDevMode および hDevNames メンバーには、DEVMODE および DEVNAMES 構造体のグローバル メモリ ハンドルが含まれています。 これらの構造体には、追加のページ情報とプリンターに関する情報が含まれています。 この情報を使用して、選択したプリンターに送信する出力を準備できます。

ユーザーが [ページ設定] ダイアログ ボックスをキャンセルした場合、またはエラーが発生した場合、PageSetupDlg は FALSE 返します。 エラーの原因を特定するには、CommDlgExtendedError 関数を呼び出して、拡張エラー値を取得します。

このセクションでは、次のトピックについて説明します。

[ページ設定] ダイアログ ボックスの初期化

既定では、[ページ設定] ダイアログ ボックスには、現在の既定のプリンターに関する情報が表示されます。 ダイアログ ボックスに特定のプリンターに関する情報を表示するように指示するには、DEVMODE または DEVNAMES 構造体のメンバーを設定し、これらの構造体のグローバル メモリ ハンドル PAGESETUPDLGの対応するメンバーに割り当てます。 現在インストールされていないプリンターの名前を指定すると、ダイアログ ボックスにエラー メッセージが表示されます。 ダイアログ ボックスにエラー メッセージが表示されないようにするには、PSD_NOWARNING 値を使用します。 [ページ設定] ダイアログ ボックスを表示せずに既定のプリンターに関する情報を取得するには、PSD_RETURNDEFAULT 値を使用します。

既定の測定システムがインチの場合、ダイアログ ボックスでは既定の単位として 1000 分の 1 のインチが使用されます。 既定の測定システムがメトリックの場合、ダイアログ ボックスでは既定の測定単位として 100 分の 1 のミリメートルが使用されます。 既定の測定単位をオーバーライドするには、PAGESETUPDLG 構造体の Flags メンバーに PSD_INHUNDREDTHSOFMILLIMETERS フラグまたは PSD_INTHOUSANDTHSOFINCHES フラグを設定します。

既定では、余白の初期値は 1 インチです。 PSD_MARGINS フラグを設定すると、rtMargin メンバーで指定された初期余白の値がダイアログ ボックスに表示されます。 ユーザーが余白に指定できる既定の最小値は、プリンターで許可される最小余白です。 PSD_MINMARGINS フラグを設定すると、rtMinMargin メンバーで指定された最小余白がダイアログ ボックスに適用されます。

ユーザーが特定のオプションを選択できないようにするには、次のフラグの任意の組み合わせを設定して、対応するコントロールを無効にします。

意味
PSD_DISABLEMARGINS ユーザーが余白の設定を入力する編集コントロールを無効にします。
PSD_DISABLEORIENTATION と横 ラジオ ボタンを無効にします。
PSD_DISABLEPAPER 用紙サイズと用紙ソースを選択するためのコントロールを無効にします。
PSD_DISABLEPRINTER [プリンターの] ボタンを無効にします。

 

[ページ設定] ダイアログ ボックスのカスタマイズ

アプリケーションに固有の追加コントロールを含める場合など、ページ設定 ダイアログ ボックスのカスタム テンプレートを指定できます。 PageSetupDlg 関数は、既定のテンプレートの代わりにカスタム テンプレートを使用します。

[ページ設定] ダイアログ ボックスのカスタム テンプレートを指定するには

  1. Prnsetup.dlg ファイルで指定された既定のテンプレートを変更して、カスタム テンプレートを作成します。 既定の Page Setup ダイアログ テンプレートで使用されるコントロール識別子は、Dlgs.h ファイルで定義されます。
  2. PAGESETUPDLG 構造体を使用して、次のようにテンプレートを有効にします。
      • カスタム テンプレートがアプリケーションまたはダイナミック リンク ライブラリのリソースである場合は、Flags メンバーで PSD_ENABLEPAGESETUPTEMPLATE フラグを設定します。 hInstance を使用し、lpPageSetupTemplateName 構造体のメンバーを して、モジュールとリソース名を識別します。

        -又は-

      • カスタム テンプレートが既にメモリ内にある場合は、PSD_ENABLEPAGESETUPTEMPLATEHANDLE フラグを設定します。 hPageSetupTemplate メンバーを使用して、テンプレートを含むメモリ オブジェクトを識別します。

ダイアログ ボックス プロシージャに送信されたメッセージをフィルター処理するには、PageSetupHook フック プロシージャを指定します。 カスタム テンプレートを使用して追加のコントロールを定義する場合は、PageSetupHook フック プロシージャを指定してコントロールの入力を処理する必要があります。 さらに、PagePaintHook フック プロシージャを指定して、[ページ設定] ダイアログ ボックスに表示されるサンプル ページの内容をカスタマイズできます。 PagePaintHook フックプロシージャの詳細については、「サンプル ページ のカスタマイズを参照してください。

PageSetupHook フック プロシージャを有効にするには

  1. PAGESETUPDLG 構造体の Flags メンバーに PSD_ENABLEPAGESETUPHOOK フラグを設定します。
  2. lpfnPageSetupHook メンバーでフック プロシージャのアドレスを指定します。

ダイアログ ボックス プロシージャは、WM_INITDIALOG メッセージを処理した後、PageSetupHook フック プロシージャに WM_INITDIALOG メッセージを送信します。 このメッセージの lParam パラメーターは、ダイアログ ボックスの初期化に使用 PAGESETUPDLG 構造体へのポインターです。

サンプル ページのカスタマイズ

[ページ設定] ダイアログ ボックスには、ユーザーの選択が印刷出力の外観にどのように影響するかを示すサンプル ページの画像が含まれています。 画像は、選択した用紙または封筒の種類を表す四角形で構成され、現在の余白を表す点線の四角形と、印刷されたページでテキストがどのように表示されるかを示す部分的な (ギリシャ語のテキスト) 文字で構成されます。

PageSetupDlg 関数を呼び出すときに、PagePaintHook フック プロシージャを指定して、サンプル ページの外観をカスタマイズできます。

PagePaintHook フック プロシージャを有効にするには

  1. PAGESETUPDLG 構造体の Flags メンバーに PSD_ENABLEPAGEPAINTHOOK フラグを設定します。
  2. lpfnPagePaintHook メンバーでフック プロシージャのアドレスを指定します。

ダイアログ ボックスがサンプル ページの内容を描画しようとするたびに、フック プロシージャは次のメッセージを一覧表示された順序で受け取ります。

メッセージ 意味
WM_PSD_PAGESETUPDLG このダイアログ ボックスは、サンプル ページを描画します。 フック プロシージャでは、このメッセージを使用して、サンプル ページの内容を描画する準備を行うことができます。
WM_PSD_FULLPAGERECT このダイアログ ボックスは、サンプル ページを描画します。 このメッセージは、サンプル ページの外接する四角形を指定します。
WM_PSD_MINMARGINRECT このダイアログ ボックスは、サンプル ページを描画します。 このメッセージは、余白の四角形を指定します。
WM_PSD_MARGINRECT ダイアログ ボックスで余白の四角形が描画されます。
WM_PSD_GREEKTEXTRECT ダイアログ ボックスは、余白の四角形内にギリシャ語のテキストを描画します。
WM_PSD_ENVSTAMPRECT ダイアログ ボックスは、封筒のサンプル ページの封筒スタンプの四角形に描画されます。 このメッセージは封筒に対してのみ送信されます。
WM_PSD_YAFULLPAGERECT ダイアログ ボックスで、封筒のサンプル ページの返送先住所部分が描画されます。 このメッセージは、封筒やその他の用紙サイズに対して送信されます。

 

フック プロシージャが描画シーケンス (WM_PSD_PAGESETUPDLGWM_PSD_FULLPAGERECT、または WM_PSD_MINMARGINRECT) の最初の 3 つのメッセージのいずれかに対して TRUE を返す場合、ダイアログ ボックスはそれ以上メッセージを送信せず、次にシステムがサンプル ページを再描画する必要があるまでサンプル ページに描画しません。 フック プロシージャが 3 つのメッセージすべてに対 FALSE を返す場合、ダイアログ ボックスは描画シーケンスの残りのメッセージを送信します。

フック プロシージャが描画シーケンス内の残りのメッセージに対して TRUE 返した場合、ダイアログ ボックスはサンプル ページの対応する部分を描画しません。 フック プロシージャからこれらのメッセージに対して FALSE 返された場合、ダイアログ ボックスはサンプル ページのその部分を描画します。

ダイアログ ボックスでサンプル ページの内容が描画されないようにするには、PSD_DISABLEPAGEPAINTING フラグを設定します。 このフラグは、PagePaintHook フック プロシージャには影響しません。このプロシージャは引き続きすべての WM_PSD_* メッセージを受け取り、サンプル ページの内容を描画できます。