OPENFILENAME

GetOpenFileName関数およびGetSaveFileName関数が「開く」および「名前を付けて保存」ダイアログボックスを初期化するために使用する情報が格納されます。ユーザーがダイアログボックスを閉じると、ユーザーが選択したファイルに関する情報が格納されます。

typedef struct tagOFN { 
  DWORD         lStructSize;
  HWND          hwndOwner; 
  HINSTANCE     hInstance; 
  LPCTSTR       lpstrFilter; 
  LPTSTR        lpstrCustomFilter; 
  DWORD         nMaxCustFilter; 
  DWORD         nFilterIndex; 
  LPTSTR        lpstrFile; 
  DWORD         nMaxFile; 
  LPTSTR        lpstrFileTitle; 
  DWORD         nMaxFileTitle; 
  LPCTSTR       lpstrInitialDir; 
  LPCTSTR       lpstrTitle; 
  DWORD         Flags; 
  WORD          nFileOffset; 
  WORD          nFileExtension; 
  LPCTSTR       lpstrDefExt; 
  LPARAM        lCustData; 
  LPOFNHOOKPROC lpfnHook; 
  LPCTSTR       lpTemplateName; 
#if (_WIN32_WINNT >= 0x0500)
  void *        pvReserved;
  DWORD         dwReserved;
  DWORD         FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)
} OPENFILENAME, *LPOPENFILENAME;

(_WIN32_WINNT >= 0x0500) は Windows 2000/XP 以降で有効

メンバ

lStructSize

OPENFILENAME構造体のサイズをバイト単位で指定します。76を指定します。

Windows 2000/XP: 88を指定することで、拡張されたメンバを使用できます。

hwndOwner

ダイアログボックスのオーナーウィンドウのハンドルを指定します。0 (NULL) を指定すると、ダイアログボックスはオーナーウィンドウを持ちません。

hInstance

FlagsメンバでOFN_ENABLETEMPLATEHANDLEフラグが設定されている場合には、ダイアログボックステンプレートが格納されているメモリオブジェクトのハンドルを指定します。OFN_ENABLETEMPLATEフラグが設定されている場合には、lpTemplateNameメンバで指定された名前のダイアログボックステンプレートを含むモジュールのハンドルを指定します。どちらのフラグも設定されていない場合には、このメンバは無視されます。

FlagsメンバでOFN_EXPLORERフラグが設定されている場合には、システムは指定されたテンプレートを使用して、デフォルトのエクスプローラスタイルダイアログボックスの子となるダイアログボックスを作成します。OFN_EXPLORERフラグが設定されていない場合には、指定されたテンプレートが使用して、デフォルトダイアログボックスと差し替えになるオールドスタイルダイアログボックスを作成します。

lpstrFilter

2つで1組のフィルタ文字列が格納された静的なバッファのアドレスを指定します。複数の組を指定することができます。それぞれの文字列は1個のヌル文字で区切り、最後の文字列の後ろには2個のヌル文字を置かなくてはなりません。

それぞれの組のうち、1つ目の文字列はフィルタについて説明した表示文字列(例:“テキストファイル”)を、もう1つの文字列はフィルタパターン(例:“*.txt”)を指定します。1つの表示文字列につき複数のフィルタパターンを指定するには、パターンをセミコロンで区切ります(例:“*.txt;*.doc;*.bak”)。パターン文字列には、有効なファイル名やアスタリスク(*)ワイルドカード文字を組み合わせて使用することができます。パターン文字列に空白(半角スペース)を含めてはいけません。

フィルタの順序は変更されません。このメンバで指定された順序で「ファイルの種類」コンボボックスに表示されます。

このメンバに0 (NULL) を指定すると、ダイアログボックスにはフィルタが表示されません。

lpstrCustomFilter

ユーザーが選択した1組のフィルタパターン文字列を保存するためのバッファのアドレスを指定します。2つの文字列は1個のヌル文字で区切られ、2つ目の文字列の後ろには2個のヌル文字が置かれます。1つ目の文字列はカスタムフィルタについて説明した表示文字列、もう1つの文字列はユーザーが選択したフィルタパターンを表します。アプリケーションが最初にダイアログボックスを作成する際には、空文字列ではない任意の文字列を指定することができます。ユーザーがファイルを選択すると、現在のフィルタパターンが2番目の文字列までコピーされます。保存されるフィルタパターンは、lpstrFilterメンバで指定されたパターンのうちの1つ、またはユーザーにより入力されたフィルタパターンです。次回のダイアログボックス作成時に、この文字列を使用してユーザー定義のファイルフィルタを初期化します。nFilterIndexメンバが0のとき、ダイアログボックスはカスタムフィルタを使用します。

このメンバが0 (NULL) であるとき、ユーザー定義のフィルタパターンは保存されません。

このメンバが0 (NULL) 以外の場合、nMaxCustFilterメンバにはlpstrCustomFilterメンバで指定されるバッファのサイズをバイト単位(Unicode版の場合は文字数)で指定しなければいけません。

nMaxCustFilter

lpstrCustomFilterメンバで指定されるバッファのサイズをバイト単位(Unicode版の場合は文字数)で指定します。このバッファは少なくとも40文字以上である必要があります。lpstrCustomFilterメンバに空文字列を指すポインタもしくは0 (NULL) である場合には、このメンバは無視されます。

nFilterIndex

「ファイルの種類」コントロールで現在選択されているフィルタのインデックスを指定します。lpstrFilterメンバが指すバッファに、フィルタを定義する文字列の組が格納されています。これらの文字列の最初の組がインデックス1を、2番目の組がインデックス2を持ちます。インデックス0lpstrCustomFilterメンバで指定されるカスタムフィルタを表しています。入力時にインデックスを指定して、ダイアログボックスの初期フィルタを指定することができます。ユーザーがファイルを選択すると、その時点で表示されているフィルタのインデックスがこのメンバに格納されます。nFilterIndexメンバが0で、かつlpstrCustomFilterメンバが0 (NULL) である場合には、lpstrFilterメンバが指すバッファにある最初のフィルタが使用されます。これら3つのメンバがすべて0 (NULL) である場合には、フィルタは使用されず、ダイアログボックスのファイルリストコントロールにはどのファイルも表示されません。

lpstrFile

「ファイル名」エディットコントロールを初期化するのに使用されるファイル名を格納したバッファのアドレスを指定します。初期化が必要ない場合には、バッファの先頭にヌル文字を格納しておきます。GetOpenFileName関数またはGetSaveFileName関数の呼び出しが成功すると、このバッファには選択されたファイル名がフルパスで格納されます。

FlagsメンバでALLOWMULTISELECTフラグが設定されており、ユーザーが複数のファイルを選択した場合には、バッファにはカレントディレクトリ名と選択されたファイルの名前が格納されます。エクスプローラスタイルダイアログボックスでは、ディレクトリ名およびファイル名文字列はそれぞれ1個のヌル文字で区切られており、最後のファイル名の後には2つの連続したヌル文字が置かれます。オールドスタイルダイアログボックスでは、ディレクトリ名およびファイル名はそれぞれ空白(半角スペース)で区切られており、空白文字を含むファイル名に対しては短い形式のファイル名が使用されます。FindFirstFile関数を使用して、短いファイル名を長いファイル名に変換することができます。ユーザーが選択したファイルが1つのみであれば、パスとファイル名との間に区切り文字は挿入されません。

バッファが小さすぎる場合には、関数は戻り値0 (FALSE) を返し、CommDlgExtendedError関数は0x3003 (FNERR_BUFFERTOOSMALL) を返します。この場合、lpstrFileメンバが指すバッファの最初の2バイトに必要なサイズがバイト単位(Unicode版の場合は文字数)で格納されます。

nMaxFile

lpstrFileメンバで指定されるバッファのサイズをバイト単位(Unicode版の場合は文字数)で指定します。バッファのサイズは、パス、ファイル名および終端ヌル文字が格納できるよう十分に大きくなければなりません。バッファが小さすぎてファイル情報を格納できない場合には、関数は失敗します。バッファは少なくとも256文字以上の大きさであるべきです。

lpstrFileTitle

(パス情報を除く)ファイル名および拡張子を格納するためのバッファのアドレスを指定します。この情報が必要ない場合には、このメンバに0 (NULL) を指定することができます。

nMaxFileTitle

lpstrFileTitle メンバで示されるバッファのサイズをバイト単位(Unicode版の場合は文字数)で指定します。lpstrFileTitle メンバに0 (NULL) を指定した場合は、このメンバは無視されます。

lpstrInitialDir

初期ディレクトリを指定する文字列のアドレスを指定します。初期ディレクトリを選択するアルゴリズムはプラットフォームによって異なります。

Windows 2000/XP:

  1. lpstrFileメンバが指すバッファにパスが格納されている場合、そのパスが初期ディレクトリになります。

  2. lpstrInitialDirメンバで指定されたディレクトリが初期ディレクトリになります。

  3. 以前に『開く』または『名前を付けて保存』ダイアログボックスを使用している場合には、最後に使用したパスが初期ディレクトリとして選択されます。ただし、アプリケーションが長い間実行されていない場合には、保存されている選択パスの情報は破棄されます。

  4. lpstrInitialDir メンバが0 (NULL) であり、かつ、カレントディレクトに指定されたフィルタタイプのファイルが存在する場合には、カレントディレクトリが初期ディレクトリになります。

  5. 現在のユーザーのパーソナルファイルディレクトリが初期ディレクトリになります。

  6. デスクトップフォルダが初期ディレクトリになります。

Windows 98/Me:

  1. lpstrInitialDirメンバで指定されたディレクトリが初期ディレクトリになります。

  2. lpstrInitialDirメンバが0 (NULL) であり、かつ、lpstrFileメンバが指すバッファにパスが格納されている場合、そのパスが初期ディレクトリになります。

  3. カレントディレクトに指定されたフィルタタイプのファイルが存在する場合には、カレントディレクトリが初期ディレクトリになります。

  4. 現在のユーザーのパーソナルファイルディレクトリが初期ディレクトリになります。

Windows 95/NT:

  1. lpstrInitialDirメンバで指定されたディレクトリが初期ディレクトリになります。

  2. lpstrInitialDirメンバが0 (NULL) であり、かつ、lpstrFileメンバが指すバッファにパスが格納されている場合、そのパスが初期ディレクトリになります。

  3. カレントディレクトが初期ディレクトリになります。

lpstrTitle

ダイアログボックスのタイトルバーに表示される文字列のアドレスを指定します。このメンバに0 (NULL) を指定すると、デフォルトのタイトル(『開く』および『名前を付けて保存』)が使用されます。

Flags

ダイアログボックスの初期化に使用されるビットフラグを設定します。関数の呼び出しが成功すると、ユーザーが入力した情報を示すビットフラグが設定されます。このメンバの値は以下の値の組み合わせになります。

0x00000001 (OFN_READONLY)

ダイアログボックスが作成された際に、はじめから「書込み禁止」チェックボックスが選択された状態にします。ダイアログボックスが閉じられると、このフラグは「書込み禁止」チェックボックスの状態を表します。

0x00000002 (OFN_OVERWRITEPROMPT)

「名前をつけて保存」ダイアログボックスで、選択されたファイルがすでに存在する場合にはメッセージボックスを表示します。ユーザーは、ファイルを上書きするかどうかを選択しなければなりません。

0x00000004 (OFN_HIDEREADONLY)

「書込み禁止」チェックボックスを無効にします。

0x00000008 (OFN_NOCHANGEDIR)

ファイル検索中にユーザーがディレクトリを変更しても、カレントディレクトリが変更されないようにします。

Windows NT4.0/2000/XP: このフラグはGetOpenFileName関数に対しては有効ではありません。

0x00000010 (OFN_SHOWHELP)

「ヘルプ」ボタンを表示します。「ヘルプ」ボタンが押されると、ダイアログボックスはhwndOwnerメンバで指定されたオーナーウィンドウにHELPMSGSTRING ("commdlg_help") 登録メッセージを送信します。エクスプローラスタイルダイアログボックスの場合は、「ヘルプ」ボタンが押されるとフックプロシージャにCDN_HELP通知メッセージが送信されます。

0x00000020 (OFN_ENABLEHOOK)

lpfnHookメンバで指定されたフックプロシージャを有効にします。

0x00000040 (OFN_ENABLETEMPLATE)

lpTemplateNameメンバが指す文字列がhInstanceメンバで指定されたモジュールの持つダイアログテンプレートリソースの名前であることを示します。OFN_EXPLORERフラグが設定されている場合には、指定されたテンプレートを使用してデフォルトエクスプローラスタイルダイアログボックスの子ダイアログボックスを作成します。OFN_EXPLORERフラグが設定されていない場合には、指定されたテンプレートを使用して、デフォルトダイアログボックスと差し替えて表示されるオールドスタイルダイアログボックスを作成します。

0x00000080 (OFN_ENABLETEMPLATEHANDLE)

hInstanceメンバがダイアログボックステンプレートを含むメモリオブジェクトのハンドルであることを示します。このフラグが指定された場合にはlpTemplateNameメンバの値が無視されます。OFN_EXPLORERフラグが設定されている場合には、指定されたテンプレートを使用してデフォルトエクスプローラスタイルダイアログボックスの子ダイアログボックスを作成します。OFN_EXPLORERフラグが設定されていない場合には、指定されたテンプレートを使用して、デフォルトダイアログボックスと差し替えて表示されるオールドスタイルダイアログボックスを作成します。

0x00000100 (OFN_NOVALIDATE)

返されるファイル名の中に無効な文字が含まれることを許容します。通常、アプリケーションはFILEOKSTRING ("commdlg_FileNameOK") 登録メッセージでファイル名をチェックするフックプロシージャを使用します。エディットコントロールのテキストが空であるか空白文字(半角スペース)のみである場合には、ファイルとディレクトリのリストが更新されます。それ以外の場合は、nFileOffsetメンバおよびnFileExtensionメンバに値がセットされます。デフォルトの拡張子を付加したり、lpstrFileTitleメンバが指すバッファにテキストをコピーしたりすることはありません。nFileOffsetメンバで指定された値が負の値である場合は、ファイル名が無効であることを示します。それ以外の場合はファイル名は有効で、nFileOffsetメンバおよびnFileExtensionメンバはこのフラグを指定しなかった場合と同様に使用することができます。

0x00000200 (OFN_ALLOWMULTISELECT)

「ファイル名」リストボックスで複数の選択ができるように指定します。OFN_EXPLORERフラグとともに指定した場合は、エクスプローラスタイルのユーザーインターフェースが使用されます。それ以外ではオールドスタイルのユーザーインターフェースが使用されます。

ユーザーが複数のファイルを指定した場合には、lpstrFileメンバで指定されるバッファには、カレントディレクトリのパス名と選択されたファイルの名前が格納されます。nFileOffsetメンバは最初のファイル名へのオフセットがバイト数(Unicode版では文字数)で格納されます。また、nFileExtensionメンバは使用されません。

エクスプローラスタイルダイアログボックスの場合、ディレクトリ名およびファイル名は、それぞれ1個のヌル文字で区切られており、最後のファイル名の後には2つの連続したヌル文字が置かれます。このため、エクスプローラスタイルダイアログボックスは空白文字を含む長いファイル名を返すことができます。

オールドスタイルダイアログボックスでは、それぞれのディレクトリ名およびファイル名は空白文字で区切られており、空白文字を含むファイル名に対しては短い形式のファイル名が使用されます。FindFirstFile関数を使用して、短いファイル名を長いファイル名に変換することができます。

オールドスタイルダイアログボックスでカスタムテンプレートを指定する場合、「ファイル名」リストボックスの定義にLBS_EXTENDEDSELスタイルを含めなければいけません。

0x00000400 (OFN_EXTENSIONDIFFERENT)

ユーザーがlpstrDefExtメンバで指定された拡張子と異なる拡張子を持つファイル名を入力したことを示します。lpstrDefExtメンバが0 (NULL) の場合、このフラグは使用されません。

0x00000800 (OFN_PATHMUSTEXIST)

ユーザーが有効なパスおよびファイル名のみを入力できるように指定します。このフラグが指定されたときにユーザーが無効なパスおよびファイル名を入力した場合には、メッセージボックスに警告が表示されます。

0x00001000 (OFN_FILEMUSTEXIST)

ユーザーが「ファイル名」エントリフィールドに存在するファイル名のみを入力できるように指定します。このフラグが指定されたときにユーザーが無効なファイル名を入力した場合には、メッセージボックスで警告が表示されます。このフラグが指定されると、OFN_PATHMUSTEXISTフラグが同時に使用されます。

0x00002000 (OFN_CREATEPROMPT)

存在しないファイルをユーザーが指定した場合、ファイルを作成するかどうかをユーザーに問い合わせます。ファイルを作成することをユーザーが選択すると、ダイアログボックスが閉じて、指定されたファイル名が返されます。それ以外の場合は、ダイアログボックスが開かれたままになります。このフラグをOFN_ALLOWMULTISELECTフラグとともに指定した場合は、ユーザーは存在しないファイルを1つだけ指定することができます。

0x00004000 (OFN_SHAREAWARE)

ネットワーク共有違反によってGetOpenFileName関数が失敗した場合に、エラーを無視して選択されたファイル名を返すように指定します。このフラグが設定されていない場合、ユーザーが指定したファイル名に対して発生したネットワーク共有違反はフックプロシージャに通知されます。OFN_EXPLORERフラグが指定されている場合には、フックプロシージャにCDN_SHAREVIOLATION通知メッセージが送信されます。OFN_EXPLORERフラグが指定されていない場合には、フックプロシージャにSHAREVISTRING ("commdlg_ShareViolation") 登録メッセージが送信されます。

0x00008000 (OFN_NOREADONLYRETURN)

返されたファイルは、「書込み禁止」チェックボックスが選択されておらず、書き込み制限のないディレクトリ内のものであることを示します。

0x00010000 (OFN_NOTESTFILECREATE)

ダイアログボックスが閉じられる前にファイルが作成されないように指定します。作成可能・変更不可のネットワーク共有上にファイルを保存する場合には、このフラグを指定するべきです。このフラグを指定すると、書き込み制限、ディスク容量、オープンされたドライブドア、ネットワーク保護に関してはチェックされません。作成可能・変更不可のファイルを作成する場合、一度ファイルを閉じると再び開くことができなくなるため、アプリケーションは注意してファイル操作を行わなければいけません。

0x00020000 (OFN_NONETWORKBUTTON)

「ネットワーク」ボタンを表示しません。

0x00040000 (OFN_NOLONGNAMES)

オールドスタイルダイアログボックスでは、8.3形式の短いファイル名が返ります。エクスプローラスタイルダイアログボックスではこのフラグは無視され、常に長いファイル名が返ります。

0x00080000 (OFN_EXPLORER)

「開く」「名前をつけて保存」ダイアログボックスのカスタマイズに、新しいエクスプローラスタイルのカスタマイズメソッドを使用するように指定します。

デフォルトでは、「開く」および「名前をつけて保存」ダイアログボックスは、このフラグが指定されているかどうかにかかわらず、エクスプローラスタイルのユーザーインターフェースを使用します。フックプロシージャやカスタムテンプレートを使用する場合、またはOFN_ALLOWMULTISELECTフラグを指定する場合には、このフラグを使用するかどうかを決定する必要があります。

オールドスタイルのユーザーインターフェースを使用する場合には、このフラグを指定せずに、置き換え用のオールドスタイルテンプレートまたはフックプロシージャを指定します。オールドスタイルインターフェースを使用するがカスタムテンプレートやフックプロシージャが必要ない場合には、常に0 (FALSE) を返す単純なフックプロシージャを使用する必要があります。

0x00100000 (OFN_NODEREFERENCELINKS)

ショートカットファイルが選択された場合に、ショートカットファイル(.lnk)のパスおよびファイル名を返すように指示します。このフラグを指定しない場合は、ショートカットが参照するファイルのパスおよびファイル名が返されます。

0x00200000 (OFN_LONGNAMES)

オールドスタイルダイアログボックスにおいて、長いファイル名を使用します。このフラグが指定されていない場合、もしくはOFN_ALLOWMULTISELECTフラグが指定されている場合には、オールドスタイルダイアログボックスは空白文字を含むファイル名に対して短い形式のファイル名を使用します。エクスプローラスタイルダイアログボックスではこのフラグは無視され、常に長いファイル名が返ります。

0x00400000 (OFN_ENABLEINCLUDENOTIFY)

Windows 2000/XP 以降: ユーザーがフォルダを開いた際に、OFNHookProcフックプロシージャにCDN_INCLUDEITEM通知メッセージが送信されるようにします。新たに開かれたフォルダに含まれるそれぞれのアイテムに対して通知が送られます。これらの通知メッセージにより、どのアイテムをフォルダのアイテムリストに表示するかを制御することができます。

0x00800000 (OFN_ENABLESIZING)

Windows 98/Me/2000/XP 以降: マウスもしくはキーボードの操作でエクスプローラスタイルダイアログボックスのサイズを変更できるようにします。デフォルトでは、このフラグが指定されているかどうかにかかわらず、エクスプローラスタイルダイアログボックスのサイズを変更することができます。このフラグは、フックプロシージャまたはカスタムテンプレートを使用する場合にのみ必要です。オールドスタイルダイアログボックスではサイズを変更することはできません。

0x02000000 (OFN_DONTADDTORECENT)

Windows 2000/XP 以降: ユーザーの「最近使ったファイル」のリンクを含むディレクトリに、選択されたファイルのリンクが追加されないようにします。このディレクトリの位置を取得するには、CSIDL_RECENTフラグを指定してSHGetSpecialFolderLocation関数を呼び出します。

0x10000000 (OFN_FORCESHOWHIDDEN)

Windows 2000/XP 以降: システムファイルまたは隠し属性ファイルを強制的に表示させるように指定します。ただし、システム属性・隠し属性の両方の属性を持つファイルは表示されません。

nFileOffset

lpstrFileメンバが指す文字列の中で、パスの先頭からファイル名までの、バイト数(Unicode版の場合は文字数)で表されたゼロベースのオフセットが格納されます。ユーザーが複数のファイルを選択した場合は、最初のファイル名へのオフセットになります。

nFileExtension

lpstrFileメンバが指す文字列の中で、パスの先頭からファイル名の拡張子(ピリオド“.”の次の文字)までの、バイト数(Unicode版の場合は文字数)で表されたゼロベースのオフセットが格納されます。ユーザーが拡張子を入力せず、かつlpstrDefExtメンバに0 (NULL) が指定されている場合には、終端ヌル文字へのオフセットになります。ユーザーが、ファイル名の最後の文字としてピリオド“.”を入力した場合には、このメンバは0になります。

lpstrDefExt

デフォルトの拡張子を格納したバッファのアドレスを指定します。ユーザーが拡張子を入力しなかった場合には、この拡張子が追加されます。この文字列はどのような長さにすることもできますが、そのうち最初の3文字だけが拡張子として追加されます。この文字列にピリオド“.”を含めるべきではありません。このメンバが0 (NULL) であり、かつユーザーが拡張子を入力しなかった場合には、拡張子は追加されません。

lCustData

lpfnHookメンバで指定されるフックプロシージャに渡されるアプリケーション定義のデータを指定します。フックプロシージャがWM_INITDIALOGメッセージを受け取るとき、メッセージのlParamパラメータは、ダイアログボックス作成時に指定されたOPENFILENAME構造体のアドレスになります。フックプロシージャは、この構造体からlCustDataメンバの値を取得することができます。

lpfnHook

フックプロシージャのアドレスを指定します。FlagsメンバにOFN_ENABLEHOOKフラグが指定されていない場合は、このメンバは無視されます。

FlagsメンバにOFN_EXPLORERフラグが指定されていない場合は、lpfnHookメンバには、ダイアログボックスに用いられるメッセージを受け取るOFNHookProcOldStyleフックプロシージャのアドレスを指定します。フックプロシージャは、メッセージをデフォルトダイアログボックスプロシージャに渡すには戻り値として0 (FALSE) を返します。また、メッセージを捨てるには1 (TRUE) を返します。

OFN_EXPLORERフラグが指定されている場合は、lpfnHookメンバにはOFNHookProcフックプロシージャのアドレスを指定します。フックプロシージャは、ダイアログボックスから送られる通知メッセージと、子ダイアログテンプレートを指定することで定義される追加のコントロールに関するメッセージを受け取ります。ただし、デフォルトダイアログボックスの標準コントロールによるメッセージは受け取りません。

lpTemplateName

hInstanceメンバで指定されるモジュールに含まれるダイアログテンプレートリソースの名前を表わすヌル終端文字列のアドレスを指定します。番号付けられたダイアログリソースの場合は、リソース番号を指定することができます。FlagsメンバにOFN_ENABLETEMPLATEフラグが指定されていない場合は、このメンバは無視されます。OFN_EXPLORERフラグが設定されている場合には、指定されたテンプレートを使用してデフォルトエクスプローラスタイルダイアログボックスの子ダイアログボックスを作成します。OFN_EXPLORERフラグが設定されていない場合には、指定されたテンプレートを使用して、デフォルトダイアログボックスと差し替えて表示されるオールドスタイルダイアログボックスを作成します。

pvReserved

予約されています。0 (NULL) を指定しなければいけません。

dwReserved

予約されています。0を指定しなければいけません。

FlagsEx

Windows 2000/XP: ダイアログボックスの初期化に使用されるビットフラグを指定します。0または以下のフラグを指定することができます。

0x00000001 (OFN_EX_NOPLACESBAR)

場所バーが表示されません。このフラグが指定されていない場合は、エクスプローラスタイルダイアログボックスは、「お気に入り」フォルダや「デスクトップ」フォルダなどのような一般的に使用されるフォルダを表わすアイコンを含む場所バーを表示します。

解説

互換性を保つため、FlagsメンバにOFN_ENABLEHOOKが指定されていて、かつlStructSize76 (OPENFILENAME_SIZE_VERSION_400) である場合には、場所バーが表示されません。

対応情報

Windows 95 以降 / Windows NT 3.1 以降

変数との対応

HSP 変数 メンバ
メンバ名 オフセット サイズ
ofn.0 lStructSize ( = 76 or 88 ) 0 4
ofn.1 hwndOwner 4 4
ofn.2 hInstance 8 4
ofn.3 lpstrFilter 12 4
ofn.4 lpstrCustomFilter 16 4
ofn.5 nMaxCustFilter 20 4
ofn.6 nFilterIndex 24 4
ofn.7 lpstrFile 28 4
ofn.8 nMaxFile 32 4
ofn.9 lpstrFileTitle 36 4
ofn.10 nMaxFileTitle 40 4
ofn.11 lpstrInitialDir 44 4
ofn.12 lpstrTitle 48 4
ofn.13 Flags 52 4
ofn.14 下位ワード nFileOffset 56 2
上位ワード nFileExtension 58 2
ofn.15 lpstrDefExt 60 4
ofn.16 lCustData 64 4
ofn.17 lpfnHook 68 4
ofn.18 lpTemplateName 72 4
ofn.19 pvReserved 76 4
ofn.20 dwReserved 80 4
ofn.21 FlagsEx 84 4