次の方法で共有


PRINTDLGW 構造体 (commdlg.h)

PrintDlg 関数が 印刷ダイアログ ボックスを初期化するために使用する情報を格納します。 ユーザーがダイアログ ボックスを閉じると、システムはこの構造体を使用して、ユーザーの選択に関する情報を返します。

構文

typedef struct tagPDW {
  DWORD           lStructSize;
  HWND            hwndOwner;
  HGLOBAL         hDevMode;
  HGLOBAL         hDevNames;
  HDC             hDC;
  DWORD           Flags;
  WORD            nFromPage;
  WORD            nToPage;
  WORD            nMinPage;
  WORD            nMaxPage;
  WORD            nCopies;
  HINSTANCE       hInstance;
  LPARAM          lCustData;
  LPPRINTHOOKPROC lpfnPrintHook;
  LPSETUPHOOKPROC lpfnSetupHook;
  LPCWSTR         lpPrintTemplateName;
  LPCWSTR         lpSetupTemplateName;
  HGLOBAL         hPrintTemplate;
  HGLOBAL         hSetupTemplate;
} PRINTDLGW, *LPPRINTDLGW;

メンバーズ

lStructSize

型: DWORD

構造体のサイズ (バイト単位)。

hwndOwner

型: HWND

ダイアログ ボックスを所有するウィンドウへのハンドル。 このメンバーは、任意の有効なウィンドウ ハンドルにすることも、ダイアログ ボックスに所有者が存在しない場合は NULL することもできます。

hDevMode

型: HGLOBAL

DEVMODE 構造体を含む移動可能なグローバル メモリ オブジェクトへのハンドル。 入力 hDevMode が NULL されていない場合は、DEVMODE 構造体に移動可能なメモリ ブロックを割り当てて、そのメンバーを初期化する必要があります。 PrintDlg 関数は、入力データを使用してダイアログ ボックス内のコントロールを初期化します。 PrintDlg 返されると、DEVMODE メンバーはユーザーの入力を示します。

hDevMode が入力時に NULL 場合 、PrintDlgDEVMODE 構造体にメモリを割り当て、そのメンバーを初期化してユーザーの入力を示し、それを識別するハンドルを返します。

指定したプリンターのデバイス ドライバーが拡張デバイス モードをサポートしていない場合は、printDlg が返されるときに hDevMode null

デバイス名 (DEVMODE 構造体の dmDeviceName メンバーで指定) が WIN の [devices] セクションに表示されない場合。INI、PrintDlg はエラーを返します。

hDevMode および hDevNames メンバー の詳細については、このトピックの最後にある「解説」セクションを参照してください。

hDevNames

型: HGLOBAL

DEVNAMES 構造体を含む移動可能なグローバル メモリ オブジェクトへのハンドル。 hDevNames が入力時に NULL されていない場合は、DEVNAMES 構造体に移動可能なメモリ ブロックを割り当て、そのメンバーを初期化する必要があります。 PrintDlg 関数は、入力データを使用してダイアログ ボックス内のコントロールを初期化します。 PrintDlg 戻ると、DEVNAMES メンバーには、ユーザーが選択したプリンターの情報が含まれます。 この情報を使用して、デバイス コンテキストまたは情報コンテキストを作成できます。

hDevNames メンバーは NULLできます。この場合、PrintDlg は、DEVNAMES 構造体にメモリを割り当て、そのメンバーを初期化してユーザーの入力を示し、それを識別するハンドルを返します。

hDevMode および hDevNames メンバー の詳細については、このトピックの最後にある「解説」セクションを参照してください。

hDC

型: HDC

Flags メンバーが PD_RETURNDC または PC_RETURNIC フラグを指定するかどうかに応じて、デバイス コンテキストまたは情報コンテキストへのハンドル。 どちらのフラグも指定しない場合、このメンバーの値は未定義です。 両方のフラグが指定されている場合は、PD_RETURNDC が優先されます。

Flags

型: DWORD

[印刷] ダイアログ ボックスを初期化します。 ダイアログ ボックスが戻ると、ユーザーの入力を示すようにこれらのフラグが設定されます。 このメンバーには、次の値のうち 1 つ以上を指定できます。

価値 意味
PD_ALLPAGES
0x00000000
[すべての] ラジオ ボタンが最初に選択されていることを示す既定のフラグ。 このフラグは、PD_PAGENUMS フラグと PD_SELECTION フラグが指定されていないことを示すプレースホルダーとして使用されます。
PD_COLLATE
0x00000010
このフラグを設定すると、[ の照合] チェック ボックスがオンになります。

PrintDlg 関数が戻るときにこのフラグを設定する場合、アプリケーションは複数のコピーの照合順序をシミュレートする必要があります。 詳細については、PD_USEDEVMODECOPIESANDCOLLATE フラグの説明を参照してください。

PD_NOPAGENUMSを参照してください。

PD_DISABLEPRINTTOFILE
0x00080000
[ファイルへの印刷] チェック ボックスを無効にします。
PD_ENABLEPRINTHOOK
0x00001000
lpfnPrintHook メンバーで指定されたフック プロシージャを有効にします。 これにより、[印刷] ダイアログ ボックスのフック プロシージャが有効になります。
PD_ENABLEPRINTTEMPLATE
0x00004000
メンバー hInstancelpPrintTemplateName メンバーが、既定の Print ダイアログ ボックス テンプレートの置き換えを指定することを示します。
PD_ENABLEPRINTTEMPLATEHANDLE
0x00010000
hPrintTemplate メンバーが、プリロードされたダイアログ ボックス テンプレートを含むデータ ブロックを識別することを示します。 このテンプレートは、[印刷] ダイアログ ボックスの既定のテンプレートを置き換えます。 このフラグが指定されている場合、システムは lpPrintTemplateName メンバーを無視します。
PD_ENABLESETUPHOOK
0x00002000
lpfnSetupHook メンバーで指定されたフック プロシージャを有効にします。 これにより、印刷設定 ダイアログ ボックスのフックプロシージャが有効になります。
PD_ENABLESETUPTEMPLATE
0x00008000
hInstance および lpSetupTemplateName メンバー 、既定の Print Setup ダイアログ ボックス テンプレートの置き換えを指定することを示します。
PD_ENABLESETUPTEMPLATEHANDLE
0x00020000
hSetupTemplate メンバーが、プリロードされたダイアログ ボックス テンプレートを含むデータ ブロックを識別することを示します。 このテンプレートは、[印刷設定] ダイアログ ボックスの既定のテンプレートを置き換えます。 このフラグが指定されている場合、システムは lpSetupTemplateName メンバーを無視します。
PD_HIDEPRINTTOFILE
0x00100000
[ファイル に印刷] チェック ボックス 非表示にします。
PD_NONETWORKBUTTON
0x00200000
[ネットワーク] ボタンを非表示または無効にします。
PD_NOPAGENUMS
0x00000008
Pages ラジオ ボタンと関連する編集コントロールを無効にします。 また、[の照合]チェック ボックス ダイアログボックスに表示されます。
PD_NOSELECTION
0x00000004
選択 ラジオ ボタンを無効にします。
PD_NOWARNING
0x00000080
既定のプリンターがない場合に警告メッセージが表示されないようにします。
PD_PAGENUMS
0x00000002
このフラグを設定すると、ページ オプション ボタンが選択されます。 PrintDlg 関数が戻るときにこのフラグを設定すると、nFromPage および nToPage メンバーは、ユーザーによって指定された開始ページと終了ページを示します。
PD_PRINTSETUP
0x00000040
[印刷] ダイアログ ボックスではなく、[印刷設定] ダイアログ ボックスが表示されます。
PD_PRINTTOFILE
0x00000020
このフラグを設定すると、[ファイルに印刷] チェック ボックスがオンになります。 PrintDlg 関数が戻るときにこのフラグを設定すると、DEVNAMES 構造体の wOutputOffset メンバーによって示されるオフセットには、文字列 "FILE:" が含まれます。 StartDoc 関数を呼び出して印刷操作を開始する場合は、DOCINFO 構造体の lpszOutput メンバーにこの "FILE:" 文字列を指定します。 この文字列を指定すると、印刷サブシステムはユーザーに対して出力ファイルの名前を照会します。
PD_RETURNDC
0x00000100
PrintDlg 、ユーザーがダイアログ ボックスで行った選択に一致するデバイス コンテキストを返します。 デバイス コンテキストは、hDC返されます。
PD_RETURNDEFAULT
0x00000400
このフラグを設定すると、PrintDlg 関数はダイアログ ボックスを表示しません。 代わりに、hDevNames および hDevMode メンバーを設定して、システムの既定のプリンター用に初期化された DEVNAMES および DEVNAMES 構造体を します。 hDevNames と hDevMode どちらも NULLする必要があります。または、PrintDlg エラーが返されます。
PD_RETURNIC
0x00000200
PD_RETURNDC フラグと同様に、このフラグを除き、デバイス コンテキストではなく情報コンテキストが返されます。 PD_RETURNDCPD_RETURNIC も指定されていない場合、hDC は出力時に未定義になります。
PD_SELECTION
0x00000001
このフラグを設定すると、選択 オプション ボタンが選択されます。 PD_PAGENUMSPD_SELECTION も設定されていない場合は、[すべての ] ラジオ ボタンが選択されます。
PD_SHOWHELP
0x00000800
ダイアログ ボックスに ヘルプ ボタンが表示されます。 hwndOwner メンバーは、ユーザーが [ヘルプ] ボタンを クリックしたときにダイアログ ボックスから送信される登録メッセージ HELPMSGSTRING を受け取るウィンドウを指定する必要があります。
PD_USEDEVMODECOPIES
0x00040000
PD_USEDEVMODECOPIESANDCOLLATEと同じです。
PD_USEDEVMODECOPIESANDCOLLATE
0x00040000
このフラグは、アプリケーションが複数のコピーと照合順序をサポートしているかどうかを示します。 入力時にこのフラグを設定して、アプリケーションが複数のコピーと照合順序をサポートしていないことを示します。 この場合、PRINTDLG 構造体の nCopies メンバーは常に 1 を返し、PD_COLLATEFlags メンバーに設定されません。

このフラグが設定されていない場合、アプリケーションは複数のコピーの印刷と照合を行います。 この場合、PRINTDLG 構造体の nCopies メンバーは、ユーザーが印刷するコピーの数を示し、Flags メンバーの PD_COLLATE フラグは、ユーザーが照合順序を使用するかどうかを示します。

このフラグが設定されているかどうかに関係なく、アプリケーションは nCopies から判断し、レンダリングするコピーの数と、それらを照合して印刷するかどうかを PD_COLLATE できます。

このフラグが設定されていて、プリンター ドライバーが複数のコピーをサポートしていない場合、コピー 編集コントロールは無効になります。 同様に、このフラグが設定されていて、プリンター ドライバーが照合順序をサポートしていない場合は、[照合順序] チェック ボックスは無効になります。

dmCopies および dmCollateDEVMODE 構造体のメンバーには、プリンター ドライバーで使用されるコピーと照合情報が含まれています。 このフラグが設定されていて、プリンター ドライバーが複数のコピーをサポートしている場合、dmCopies メンバーは、ユーザーが要求したコピーの数を示します。 このフラグが設定されていて、プリンター ドライバーが照合順序をサポートしている場合、DEVMODE 構造体の dmCollate メンバーは、ユーザーが照合順序を使用するかどうかを示します。 このフラグが設定されていない場合、dmCopies メンバーは常に 1 を返し、dmCollate メンバーは常に 0 になります。

Windows 2000/XP/2003 の既知の問題: PrintDlgを呼び出す前にこのフラグ 設定されていない場合、PrintDlg は nCopies スワップし、dmCopies 値を返すときに 可能性があります。 この問題の回避策は、dmCopies の値が 1 より大きい場合は使用します。それ以外の場合は、nCopiesを使用して、PrintDlg が返されたときに実際に印刷されるコピー数 取得します。

 

PrintDlg または PrintDlgEx が、DEVMODE 構造体の dmCopies および dmCollate メンバーに正しい値を返すようにするには、PD_RETURNDCTRUE を設定し、TRUEを PD_USEDEVMODECOPIESANDCOLLATEします。 その場合、PRINTDLG 構造体の nCopies メンバーは常に 1 で、PD_COLLATE は常に FALSE

PrintDlg または printDlgEx nCopies および PD_COLLATEで正しい値を返すようにするには、TRUE PD_RETURNDC設定し、FALSEを PD_USEDEVMODECOPIESANDCOLLATEします。 その場合、dmCopies は常に 1 であり、dmCollate は常に FALSE

Windows Vista および Windows 7 で、PrintDlg または PrintDlgEx を呼び出すときに、PD_RETURNDC が TRUE に設定され、PD_USEDEVMODECOPIESANDCOLLATE が FALSE に設定 PrintDlg または PrintDlgEx 関数は、PRINTDLG 構造体の nCopies メンバー内のコピー数を設定します。 PRINTDLG 構造体の hDC メンバーによって表される構造体内のコピーの数を設定します。

GDI の呼び出しを行うときは、nCopiesの値を無視し、値を 1 と見なし、返された hDC を使用して重複コピーを印刷しないようにする必要があります。

nFromPage

型: word

開始ページ編集コントロールの初期値。

PrintDlg 戻るときに、nFromPage は、ユーザーが指定した開始ページです。 ユーザーが [ok] ボタンを クリックしたときに [ページ] オプション ボタンが選択されている場合、PrintDlg PD_PAGENUMS フラグを設定し、ユーザーが最小から最大ページ範囲の開始ページ値を入力するまで戻りません。

nFromPage または nToPage の入力値が最小/最大範囲外の場合、PrintDlg は、PD_PAGENUMS フラグが指定されている場合にのみエラーを返します。それ以外の場合は、ダイアログ ボックスが表示されますが、範囲外の値が最小値または最大値に変更されます。

nToPage

型: word

終了ページ編集コントロールの初期値。 PrintDlg 戻るときに、nToPage は、ユーザーによって指定された終了ページです。 [ページ] オプション ボタンが選択されている場合、Ok ボタンをクリックすると、PrintDlg PD_PAGENUMS フラグが設定され、ユーザーがページの最小値から最大ページ範囲内の終了ページ値を入力するまで戻りません。

nMinPage

型: word

From および To ページ編集コントロールで指定されたページ範囲の最小値。 nMinPage nMaxPage等しい場合、Pages ラジオ ボタンと開始ページ編集コントロールと終了ページ編集コントロールは無効になります。

nMaxPage

型: word

From および To ページ編集コントロールで指定されたページ範囲の最大値。

nCopies

型: word

hDevMode が NULL 場合、コピー 編集コントロールのコピーの初期数。それ以外の場合、dmCopies DEVMODE 構造体のメンバーには初期値が含まれます。 PrintDlg 戻るときに、nCopies には、印刷する実際の部数が含まれます。 この値は、アプリケーションまたはプリンター ドライバーが複数のコピーの印刷を担当するかどうかによって異なります。 PD_USEDEVMODECOPIESANDCOLLATE フラグが Flags メンバーで設定されている場合、nCopies は常に 1 になり、プリンター ドライバーは複数のコピーを印刷します。 フラグが設定されていない場合、アプリケーションは、nCopiesで指定されたコピーの数を印刷する必要があります。 詳細については、PD_USEDEVMODECOPIESANDCOLLATE フラグの説明を参照してください。

hInstance

型: HINSTANCE

PD_ENABLEPRINTTEMPLATE フラグまたは PD_ENABLESETUPTEMPLATE フラグが Flags メンバーで設定されている場合、hInstance は、lpPrintTemplateName または lpSetupTemplateName メンバーによって名前付けされたダイアログ ボックス テンプレートを含むアプリケーションまたはモジュール インスタンス ハンドルです。

lCustData

型: LPARAM

lpfnPrintHook または lpfnSetupHook メンバーによって識別されるフック プロシージャにシステムが渡すアプリケーション定義データ 。 システムが WM_INITDIALOG メッセージをフック・プロシージャーに送信する場合、メッセージの lParam パラメーターは、ダイアログの作成時に指定された PRINTDLG 構造体へのポインターです。 フック プロシージャでは、このポインターを使用して、lCustData 値を取得できます。

lpfnPrintHook

型: LPPRINTHOOKPROC

PrintHookProc フック プロシージャへのポインター。印刷] ダイアログ ボックス用のメッセージを処理できます。 Flags メンバーで PD_ENABLEPRINTHOOK フラグが設定されていない限り、このメンバーは無視されます。

lpfnSetupHook

型: LPSETUPHOOKPROC

SetupHookProc フック プロシージャへのポインター。このプロシージャは、印刷セットアップ ダイアログ ボックスを対象としたメッセージを処理できます。 Flags メンバーで PD_ENABLESETUPHOOK フラグが設定されていない限り、このメンバーは無視されます。

lpPrintTemplateName

型: LPCTSTR

hInstance メンバーによって識別されるモジュール内のダイアログ ボックス テンプレート リソースの名前。 このテンプレートは、既定の [印刷] ダイアログ ボックス テンプレート 置き換えます。 Flags メンバーで PD_ENABLEPRINTTEMPLATE フラグが設定されていない限り、このメンバーは無視されます。

lpSetupTemplateName

型: LPCTSTR

hInstance メンバーによって識別されるモジュール内のダイアログ ボックス テンプレート リソースの名前。 このテンプレートは、既定の 印刷設定 ダイアログ ボックス テンプレートに置き換えられます。 Flags メンバーで PD_ENABLESETUPTEMPLATE フラグが設定されていない限り、このメンバーは無視されます。

hPrintTemplate

型: HGLOBAL

PD_ENABLEPRINTTEMPLATEHANDLE フラグが Flags メンバーに設定されている場合、hPrintTemplate は、ダイアログ ボックス テンプレートを含むメモリ オブジェクトへのハンドルです。 このテンプレートは、既定の [印刷] ダイアログ ボックス テンプレート 置き換えます。

hSetupTemplate

型: HGLOBAL

Flags メンバーで PD_ENABLESETUPTEMPLATEHANDLE フラグが設定されている場合、hSetupTemplate は、ダイアログ ボックス テンプレートを含むメモリ オブジェクトへのハンドルです。 このテンプレートは、既定の 印刷設定 ダイアログ ボックス テンプレートに置き換えられます。

備考

hDevMode と hDevNames の両方 が NULL場合、PrintDlg 、現在の既定のプリンターを使用してダイアログ ボックスを初期化します。 別のプリンターのダイアログ ボックスを初期化するには、DEVNAMES 構造体の wDeviceOffset メンバーを使用してプリンターの名前を指定します。

DEVMODE 構造体の dmDeviceName メンバーもプリンター名を指定します。 ただし、dmDeviceName は 32 文字に制限されており、wDeviceOffset 名は使用できません。 wDeviceOffset と dmDeviceName 名 が同じでない場合、PrintDlg は、wDeviceOffsetで指定されたプリンターを使用してダイアログ ボックスを初期化します。

PD_RETURNDEFAULT フラグが設定され、hDevMode と hDevNames の両方 が NULL場合 、PrintDlg は、hDevNameshDevMode メンバーを使用して、ダイアログ ボックスを表示せずに現在の既定のプリンターに関する情報を返します。

手記

commdlg.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして PRINTDLG を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー commdlg.h (Windows.h を含む)

関連項目

共通ダイアログ ボックス ライブラリ

概念

DEVMODE の

DEVNAMES

PrintDlg

リファレンス

WM_INITDIALOG