印刷プロパティ シート

Print プロパティ シートは、ユーザーが特定の印刷ジョブのプロパティを指定できる標準のユーザー インターフェイスです。 プロパティ シートは、プリンターまたはアプリケーションによって異なる一連のプロパティ ページで構成されます。 標準のプロパティ ページのサブセットWindows、一部のプリンターではドライバー固有のプロパティ ページが追加され、一部のアプリケーションではアプリケーション固有のプロパティ ページが追加される場合があります。

Print プロパティ シートを 作成して表示するには、PRINTDLGEX構造体を初期化し、その構造体を PrintDlgEx 関数に渡します。

次の図は、一般的な 印刷プロパティ シート を示しています。

プリンター のプロパティ シート

PRINTDLGEX 構造体のほとんどのメンバー、PRINTDLG 構造体のメンバーと同じです。 共通構造メンバーを使用してダイアログ ボックス コントロールを操作する方法については、「印刷ダイアログ ボックス」 を参照してください。 このトピックの残りの部分では、 [印刷] ダイアログ ボックス とは異なる印刷プロパティ シート の機能について 説明します。

印刷プロパティ シート をカスタマイズするには、[全般] ページの下部にカスタム ダイアログ ボックステンプレートを指定し、[全般] ページに従う追加のプロパティ ページ を指定 します。 詳細については、「印刷プロパティ シートのカスタマイズ」を参照してください

プロパティ シートが表示されている間に PrintDlgEx 関数から通知とメッセージを受信するコールバック オブジェクトを実装できます。 カスタム テンプレートまたは追加のページを提供するアプリケーションでは、コールバック オブジェクトを使用してプロパティ シートと通信します。 詳細については、「印刷プロパティ シート のコールバック オブジェクト」を参照してください

Print プロパティ シートは、印刷する複数の非問題なページ範囲を指定するためのサポートを提供します。 PRINTDLGEX構造体の lpPageRanges メンバーは、各構造体がページ範囲を指定する PRINTPAGERANGE構造体の配列を指定します。

[ 印刷] プロパティ シートには 、ラジオ ボタンの [ページ範囲] グループの一部として [現在の ページ] ラジオ ボタンが表示されます。 [現在のページ ] ラジオ ボタンを制御するには 、PRINTDLGEX構造体の Flags メンバーで PD _ CURRENTPAGE フラグと PD _ NOCURRENTPAGE フラグを使用します。

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

印刷プロパティ シートのカスタマイズ

Print プロパティ シート 、次の方法でカスタマイズできます。

  • [全般] ページの下部にカスタム テンプレートを 指定 します。 これにより、アプリケーションに固有の追加のコントロールを含めできます。 PrintDlgEx 関数は、既定のテンプレートの代わりとしてカスタム テンプレートを使用します。
  • [全般] ページに従って追加のプロパティ ページ を指定 します。
  • コールバック オブジェクトを指定します。 詳細については、「印刷プロパティ シート のコールバック オブジェクト」を参照してください

[全般] ページの上部を 変更 することはできません。 プリンター ドライバーによって提供されるプロパティ ページを変更することはできません。

[全般] ページのカスタム テンプレートを指定するには:

  1. Prnsetup.dlg ファイルで指定されている PRINTDLGEXORD テンプレートを変更して、[全般] ページの下部にカスタム テンプレートを作成します。 通常、カスタム テンプレートは既定のテンプレートと同じサイズである必要があります。 ただし 、PD _ USELARGETEMPLATE フラグを指定してより大きな [全般] ページを作成する場合は、カスタム テンプレートを 拡大 できます。 既定の印刷ダイアログ テンプレートで使用 されるコントロール 識別子は、Dlgs.h ファイルで定義されています。

  2. PRINTDLGEX 構造体を使用して、次のようにテンプレートを有効にします。

    • カスタム テンプレートがアプリケーションまたはダイナミック リンク ライブラリのリソースである場合は 、Flags メンバーに PD _ ENABLEPRINTTEMPLATE フラグを設定します。 構造体の hInstance メンバーと lpPrintTemplateName メンバーを使用して、モジュールとリソース名を識別します。

      -または-

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

  3. カスタム テンプレートを使用して追加のコントロールを定義する場合は、コントロールの入力を処理するコールバック オブジェクトを指定する必要があります。 コールバック オブジェクトは、カスタム ダイアログ ボックスに送信されたメッセージを受信する IPrintDialogCallback::HandleMessage メソッドを実装します。

追加のプロパティ ページを指定するには

  1. 関数を使用して、追加のページを作成します。

  2. PRINTDLGEX構造体の lphPropertyPages メンバーを使用して、追加ページへのハンドルの配列を指定します。

    各ページの作成時に指定されたダイアログ ボックスプロシージャは、ページに送信されるメッセージを処理します。

  3. インターフェイスを実装するコールバック オブジェクトを指定することもできます。 PrintDlgEx 関数は、このインターフェイスを使用して 、IPrintDialogServicesインターフェイスへのポインターをアプリケーションに渡します。 追加のプロパティ ページのダイアログ ボックスプロシージャでは、このインターフェイスを使用して、現在選択されているプリンターに関する情報を取得できます。

印刷プロパティ シートのコールバック オブジェクト

Print プロパティ シートを 表示する アプリケーションでは、プロパティ シートの表示中に PrintDlgEx 関数から通知とメッセージを受信するコールバック オブジェクトを実装できます。 コールバック オブジェクトを指定するには 、PRINTDLGEX構造体の lpCallback メンバー内の オブジェクトへのポインターを指定します。

コールバック オブジェクトは 、IPrintDialogCallback インターフェイスを実装する必要 があります。 PrintDlgEx 関数は、次の 状況で IPrintDialogCallback メソッドを呼び出します。

  • ダイアログ ボックスが初期化されている場合
  • ユーザーがプロパティ シートによって表示されるインストール済みプリンターの一覧から別のプリンターを選択した場合
  • プロパティ シートの [全般] ページの下部にある子ダイアログ ボックスのメッセージを受信 した 場合

コールバック オブジェクトは 、IObjectWithSite インターフェイスも実装する必要 があります。 PrintDlgEx 関数はメソッドを呼び出して 、IPrintDialogServicesインターフェイスへのポインターをアプリケーションに渡します。 IPrintDialogCallbackメソッドでは 、IPrintDialogServices インターフェイスを使用して、現在選択されているプリンターに関する情報を取得できます。 IPrintDialogServices インターフェイスは、印刷プロパティ シートの [全般] ページに従って追加のページを作成するアプリケーション にも 役立ちます。 追加ページのダイアログ ボックスプロシージャは 、IPrintDialogServices メソッドを呼び 出します。