PRINTDLGA 構造体 (commdlg.h)
PrintDlg 関数が [印刷] ダイアログ ボックスを初期化するために使用する情報を格納します。 ユーザーがダイアログ ボックスを閉じると、システムはこの構造を使用してユーザーの選択に関する情報を返します。
構文
typedef struct tagPDA {
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;
LPCSTR lpPrintTemplateName;
LPCSTR lpSetupTemplateName;
HGLOBAL hPrintTemplate;
HGLOBAL hSetupTemplate;
} PRINTDLGA, *LPPRINTDLGA;
メンバー
lStructSize
型: DWORD
構造体のサイズ (バイト単位)。
hwndOwner
型: HWND
ダイアログ ボックスを所有するウィンドウへのハンドル。 このメンバーは、任意の有効なウィンドウ ハンドルにすることも、ダイアログ ボックスに所有者がない場合は NULL にすることもできます。
hDevMode
種類: HGLOBAL
DEVMODE 構造体を含む移動可能なグローバル メモリ オブジェクトへのハンドル。 入力時に hDevMode が NULL でない場合は、DEVMODE 構造体に移動可能なメモリ ブロックを割り当て、そのメンバーを初期化する必要があります。 PrintDlg 関数は、入力データを使用してダイアログ ボックス内のコントロールを初期化します。 PrintDlg が返されると、DEVMODE メンバーはユーザーの入力を示します。
入力時に hDevMode が NULL の場合、PrintDlg は DEVMODE 構造体にメモリを割り当て、そのメンバーを初期化してユーザーの入力を示し、それを識別するハンドルを返します。
指定したプリンターのデバイス ドライバーが拡張デバイス モードをサポートしていない場合、PrintDlg が返されるときに hDevMode は NULL になります。
デバイス名 (DEVMODE 構造体の dmDeviceName メンバーで指定) が WIN.INI の [devices] セクションに表示されない場合、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_PAGENUMS フラグと PD_SELECTION フラグが指定されていないことを示すプレースホルダーとして使用されます。 |
|
このフラグを設定すると、[Collate チェック] ボックスが選択されます。
PrintDlg 関数が戻るときにこのフラグが設定されている場合、アプリケーションは複数のコピーの照合順序をシミュレートする必要があります。 詳細については、 PD_USEDEVMODECOPIESANDCOLLATE フラグの説明を参照してください。 「PD_NOPAGENUMS」を参照してください。 |
|
[ファイルに印刷] チェック ボックスを無効にします。 |
|
lpfnPrintHook メンバーで指定されたフック プロシージャを有効にします。 これにより、[ 印刷 ] ダイアログ ボックスのフック プロシージャが有効になります。 |
|
hInstance メンバーと lpPrintTemplateName メンバーが、既定の [印刷] ダイアログ ボックス テンプレートの置換を指定することを示します。 |
|
hPrintTemplate メンバーが、事前に読み込まれたダイアログ ボックス テンプレートを含むデータ ブロックを識別することを示します。 このテンプレートは、[ 印刷 ] ダイアログ ボックスの既定のテンプレートに置き換えられます。 このフラグが指定されている場合、システムは lpPrintTemplateName メンバーを無視します。 |
|
lpfnSetupHook メンバーで指定されたフック プロシージャを有効にします。 これにより、[ 印刷設定 ] ダイアログ ボックスのフック プロシージャが有効になります。 |
|
hInstance メンバーと lpSetupTemplateName メンバーが、既定の [印刷設定] ダイアログ ボックス テンプレートの置換を指定することを示します。 |
|
hSetupTemplate メンバーが、事前に読み込まれたダイアログ ボックス テンプレートを含むデータ ブロックを識別することを示します。 このテンプレートは、[ 印刷設定 ] ダイアログ ボックスの既定のテンプレートに置き換えられます。 このフラグが指定されている場合、システムは lpSetupTemplateName メンバーを無視します。 |
|
[ファイルに印刷] チェック ボックスを非表示にします。 |
|
[ネットワーク] ボタンを非表示または無効にします。 |
|
[ページ] ラジオ ボタンと関連する編集コントロールを無効にします。 また、[Collate チェック] ボックスがダイアログに表示されます。 |
|
[選択] ラジオ ボタンを無効にします。 |
|
既定のプリンターがない場合に警告メッセージが表示されないようにします。 |
|
このフラグを設定すると、[ ページ ] ラジオ ボタンが選択されます。 PrintDlg 関数が戻るときにこのフラグが設定されている場合、nFromPage メンバーと nToPage メンバーは、ユーザーが指定した開始ページと終了ページを示します。 |
|
[印刷] ダイアログ ボックスではなく、[印刷設定] ダイアログ ボックスが表示されます。 |
|
このフラグを設定すると、[ファイルチェックに印刷] ボックスが選択されます。 PrintDlg 関数が戻るときにこのフラグが設定されている場合、DEVNAMES 構造体の wOutputOffset メンバーによって示されるオフセットには、文字列 "FILE:" が含まれます。 StartDoc 関数を呼び出して印刷操作を開始する場合は、DOCINFO 構造体の lpszOutput メンバーにこの "FILE:" 文字列を指定します。 この文字列を指定すると、出力サブシステムは出力ファイルの名前をユーザーに照会します。 |
|
PrintDlg は、ユーザーがダイアログ ボックスで行った選択に一致するデバイス コンテキストを返します。 デバイス コンテキストは hDC で返されます。 |
|
このフラグが設定されている場合、 PrintDlg 関数はダイアログ ボックスを表示しません。 代わりに、 hDevNames メンバーと hDevMode メンバーを、システムの既定のプリンター用に初期化された DEVMODE 構造体と DEVNAMES 構造体にハンドルするように設定します。 hDevNames と hDevMode はどちらも NULL である必要があります。または、PrintDlg はエラーを返します。 |
|
PD_RETURNDC フラグと同様ですが、このフラグはデバイス コンテキストではなく情報コンテキストを返します。 PD_RETURNDCもPD_RETURNICも指定されていない場合、hDC は出力時に未定義です。 |
|
このフラグを設定すると、[ 選択] ラジオ ボタンが選択されます。 PD_PAGENUMSもPD_SELECTIONも設定されていない場合は、[すべて] ラジオ ボタンが選択されます。 |
|
ダイアログ ボックスに [ヘルプ ] ボタンが表示されます。 hwndOwner メンバーは、ユーザーが [ヘルプ] ボタンをクリックしたときにダイアログ ボックスが送信する HELPMSGSTRING 登録済みメッセージを受信するウィンドウを指定する必要があります。 |
|
PD_USEDEVMODECOPIESANDCOLLATEと同じです。 |
|
このフラグは、アプリケーションが複数のコピーと照合順序をサポートしているかどうかを示します。 入力時にこのフラグを設定して、アプリケーションで複数のコピーと照合順序がサポートされていないことを示します。 この場合、PRINTDLG 構造体の nCopies メンバーは常に 1 を返し、PD_COLLATEは Flags メンバーに設定されません。
このフラグが設定されていない場合、アプリケーションは複数のコピーの印刷と照合を行います。 この場合、PRINTDLG 構造体の nCopies メンバーは、ユーザーが印刷するコピーの数を示し、Flags メンバーのPD_COLLATE フラグは、ユーザーが照合順序を必要とするかどうかを示します。 このフラグが設定されているかどうかに関係なく、アプリケーションは nCopies から 判断し、 レンダリングするコピーの数と、それらを印刷するかどうかをPD_COLLATEできます。 このフラグが設定されていて、プリンター ドライバーが複数のコピーをサポートしていない場合、 コピー の編集コントロールは無効になります。 同様に、このフラグが設定されていて、プリンター ドライバーで照合順序がサポートされていない場合は、[照合順序のチェック] ボックスは無効になります。 DEVMODE 構造体の dmCopies および dmCollate メンバーには、プリンター ドライバーで使用されるコピーと照合情報が含まれています。 このフラグが設定され、プリンター ドライバーが複数のコピーをサポートしている場合、 dmCopies メンバーは、ユーザーが要求したコピーの数を示します。 このフラグが設定され、プリンター ドライバーが照合順序をサポートしている場合、DEVMODE 構造体の dmCollate メンバーは、ユーザーが照合順序を必要とするかどうかを示します。 このフラグが設定されていない場合、 dmCopies メンバーは常に 1 を返し、 dmCollate メンバーは常に 0 になります。 Windows 2000/XP/2003 の既知の問題:PrintDlg を呼び出す前にこのフラグが設定されていない場合、PrintDlg が返されるときに nCopies と dmCopies の値を入れ替える可能性があります。 この問題の回避策は、値が 1 より大きい場合は dmCopies を使用し、それ以外の場合は nCopies を使用して、 PrintDlg が返されたときに印刷される実際のコピー数を取得します。 |
PrintDlg または PrintDlgEx がDEVMODE 構造体の dmCopies メンバーと dmCollate メンバーの正しい値を確実に返すようにするには、TRUEPD_RETURNDC = 設定し、TRUE PD_USEDEVMODECOPIESANDCOLLATE = します。 そのため、PRINTDLG 構造体の nCopies メンバーは常に 1 で、PD_COLLATEは常に FALSE です。
PrintDlg またはPrintDlgEx が nCopies とPD_COLLATEで正しい値を返すようにするには、TRUEPD_RETURNDC = 設定し、FALSE をPD_USEDEVMODECOPIESANDCOLLATE = します。 そのため、 dmCopies は常に 1 で、 dmCollate は常に FALSE です。
Windows Vista および Windows 7 では、printDlg または PrintDlgEx を呼び出し、PD_RETURNDCを TRUE に設定し、PD_USEDEVMODECOPIESANDCOLLATEFALSE に設定すると、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 と等しい場合、[ページ] ラジオ ボタンと開始ページと終了ページ編集コントロールは無効になります。
nMaxPage
種類: WORD
From および To ページ編集コントロールで指定されたページ範囲の最大値。
nCopies
種類: WORD
hDevMode が NULL の場合の Copies 編集コントロールの初期コピー数。それ以外の場合は、DEVMODE 構造体の dmCopies メンバーに初期値が含まれます。 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 フック プロシージャへのポインター。 フラグ メンバーで PD_ENABLEPRINTHOOK フラグが設定されていない限 り、この メンバーは無視されます。
lpfnSetupHook
種類: LPSETUPHOOKPROC
[印刷設定] ダイアログ ボックス用のメッセージを処理できる SetupHookProc フック プロシージャへのポインター。 PD_ENABLESETUPHOOK フラグがFlags メンバーに設定されていない限り、このメンバーは無視されます。
lpPrintTemplateName
種類: LPCTSTR
hInstance メンバーによって識別されるモジュール内のダイアログ ボックス テンプレート リソースの名前。 このテンプレートは、既定の [印刷 ] ダイアログ ボックス テンプレートに置き換えられます。 PD_ENABLEPRINTTEMPLATE フラグがFlags メンバーに設定されていない限り、このメンバーは無視されます。
lpSetupTemplateName
種類: LPCTSTR
hInstance メンバーによって識別されるモジュール内のダイアログ ボックス テンプレート リソースの名前。 このテンプレートは、既定の [印刷設定] ダイアログ ボックス テンプレートに置き換えられます。 このメンバーは、flags メンバーでPD_ENABLESETUPTEMPLATE フラグが設定されていない限り無視されます。
hPrintTemplate
種類: HGLOBAL
PD_ENABLEPRINTTEMPLATEHANDLE フラグが Flags メンバーに設定されている場合、hPrintTemplate はダイアログ ボックス テンプレートを含むメモリ オブジェクトへのハンドルです。 このテンプレートは、既定の [印刷 ] ダイアログ ボックス テンプレートに置き換えられます。
hSetupTemplate
種類: HGLOBAL
PD_ENABLESETUPTEMPLATEHANDLE フラグが Flags メンバーで設定されている場合、hSetupTemplate はダイアログ ボックス テンプレートを含むメモリ オブジェクトへのハンドルです。 このテンプレートは、既定の [印刷設定] ダイアログ ボックス テンプレートに置き換えられます。
注釈
hDevMode と hDevName の両方が NULL の場合、PrintDlg は現在の既定のプリンターを使用してダイアログ ボックスを初期化します。 別のプリンターのダイアログ ボックスを初期化するには、DEVNAMES 構造体の wDeviceOffset メンバーを使用してプリンターの名前を指定します。
DEVMODE 構造体の dmDeviceName メンバーもプリンター名を指定します。 ただし、 dmDeviceName は 32 文字に制限されており、 wDeviceOffset 名は使用できません。 wDeviceOffset と dmDeviceName の名前が同じでない場合、PrintDlg は wDeviceOffset で指定されたプリンターを使用してダイアログ ボックスを初期化します。
PD_RETURNDEFAULT フラグが設定され、hDevMode と hDevNames の両方が NULL の場合、PrintDlg は hDevNames メンバーと hDevMode メンバーを使用して、ダイアログ ボックスを表示せずに現在の既定のプリンターに関する情報を返します。
注意
commdlg.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして PRINTDLG を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
Header | commdlg.h (Windows.h を含む) |
こちらもご覧ください
概念
リファレンス