OPENFILENAMEA 構造体 (commdlg.h)
[Windows Vista 以降、
構文
typedef struct tagOFNA {
DWORD lStructSize;
HWND hwndOwner;
HINSTANCE hInstance;
LPCSTR lpstrFilter;
LPSTR lpstrCustomFilter;
DWORD nMaxCustFilter;
DWORD nFilterIndex;
LPSTR lpstrFile;
DWORD nMaxFile;
LPSTR lpstrFileTitle;
DWORD nMaxFileTitle;
LPCSTR lpstrInitialDir;
LPCSTR lpstrTitle;
DWORD Flags;
WORD nFileOffset;
WORD nFileExtension;
LPCSTR lpstrDefExt;
LPARAM lCustData;
LPOFNHOOKPROC lpfnHook;
LPCSTR lpTemplateName;
LPEDITMENU lpEditInfo;
LPCSTR lpstrPrompt;
void *pvReserved;
DWORD dwReserved;
DWORD FlagsEx;
} OPENFILENAMEA, *LPOPENFILENAMEA;
メンバーズ
lStructSize
型: DWORD
構造体の長さ (バイト単位)。
このパラメーターには sizeof (OPENFILENAME)
を使用します。
hwndOwner
型: HWND
ダイアログ ボックスを所有するウィンドウへのハンドル。 このメンバーは、任意の有効なウィンドウ ハンドルにすることも、ダイアログ ボックスに所有者が存在しない場合は NULL
hInstance
型: HINSTANCE
OFN_ENABLETEMPLATEHANDLE フラグが Flags メンバーで設定されている場合、hInstance は、ダイアログ ボックス テンプレートを含むメモリ オブジェクトへのハンドルです。 OFN_ENABLETEMPLATE フラグが設定されている場合、hInstance は、lpTemplateName メンバーによって名前付けされたダイアログ ボックス テンプレートを含むモジュールへのハンドルです。 どちらのフラグも設定されていない場合、このメンバーは無視されます。 OFN_EXPLORER フラグが設定されている場合、システムは指定されたテンプレートを使用して、既定のエクスプローラー スタイルのダイアログ ボックスの子であるダイアログ ボックスを作成します。 OFN_EXPLORER フラグが設定されていない場合、システムはテンプレートを使用して、既定のダイアログ ボックスを置き換える古いスタイルのダイアログ ボックスを作成します。
lpstrFilter
型: LPCTSTR
null で終わるフィルター文字列のペアを含むバッファー。 バッファー内の最後の文字列は、2 つの NULL 文字で終了する必要があります。
各ペアの最初の文字列はフィルター ("Text Files" など) を記述する表示文字列で、2 番目の文字列はフィルター パターン (たとえば、".TXT"
) を指定します。 1 つの表示文字列に複数のフィルター パターンを指定するには、セミコロンを使用してパターンを区切ります (例: "
.TXT;.DOC;.BAK"
)。 パターン文字列には、有効なファイル名文字とアスタリスク (*) ワイルドカード文字の組み合わせを指定できます。 パターン文字列にスペースを含めないでください。
システムは、フィルターの順序を変更しません。 lpstrFilterで指定された順序で
lpstrFilter
ショートカットの場合、フィルターが設定されていない場合は、GetOpenFileName を "All Files\0*.*\0\0"
を使用します。
lpstrCustomFilter
型: LPTSTR
ユーザーが選択したフィルター パターンを保持するための null で終わるフィルター文字列のペアを含む静的バッファー。 最初の文字列はカスタム フィルターを記述する表示文字列で、2 番目の文字列はユーザーが選択したフィルター パターンです。 アプリケーションで初めてダイアログ ボックスを作成するときは、最初の文字列を指定します。この文字列は空でない文字列でもかまいません。 ユーザーがファイルを選択すると、ダイアログ ボックスは現在のフィルター パターンを 2 番目の文字列にコピーします。 保持されるフィルター パターンには、lpstrFilter バッファーで指定されたパターンの 1 つ、またはユーザーが入力したフィルター パターンを指定できます。 システムは、次にダイアログ ボックスが作成されるときに、文字列を使用してユーザー定義ファイル フィルターを初期化します。 nFilterIndex メンバーが 0 の場合、ダイアログ ボックスはカスタム フィルターを使用します。
このメンバーが NULL
このメンバーが NULL
nMaxCustFilter
型: DWORD
lpstrCustomFilterによって識別されるバッファー
nFilterIndex
型: DWORD
ファイルの種類 コントロールで現在選択されているフィルターのインデックス。 lpstrFilter
lpstrFile
型: LPTSTR
編集コントロール
OFN_ALLOWMULTISELECT フラグが設定されていて、ユーザーが複数のファイルを選択した場合、バッファーには、現在のディレクトリの後に、選択したファイルのファイル名が含まれます。 エクスプローラー スタイルのダイアログ ボックスの場合、ディレクトリとファイル名の文字列は NULL 区切り
バッファーが小さすぎる場合、関数は FALSE
nMaxFile
型: DWORD
lpstrFileが指すバッファーのサイズ (文字単位)。 バッファーは、パスとファイル名の文字列または文字列を格納するのに十分な大きさである必要があります(終端 NULL 文字を含む)。
lpstrFileTitle
型: LPTSTR
選択したファイルのファイル名と拡張子 (パス情報なし)。 このメンバーは NULL
nMaxFileTitle
型: DWORD
lpstrFileTitle が指すバッファーのサイズ (文字単位)。 lpstrFileTitle
lpstrInitialDir
型: LPCTSTR
初期ディレクトリ。 初期ディレクトリを選択するためのアルゴリズムは、プラットフォームによって異なります。
Windows 7:
- lpstrInitialDir
、アプリケーションが初めて [ 開く ] ダイアログ ボックスまたは [名前を付 けて保存] ダイアログ ボックス使用した場合、ユーザーが最後に選択したパスが初期ディレクトリとして使用されます。 - それ以外 lpstrFile にパスが含まれている場合、そのパスは初期ディレクトリになります。
- それ以外の場合、lpstrInitialDir
が NULL されていない場合は、初期ディレクトリを指定します。 - lpstrInitialDir
が NULL され、現在のディレクトリに指定されたフィルターの種類のファイルが含まれている場合、初期ディレクトリは現在のディレクトリになります。 - それ以外の場合、初期ディレクトリは現在のユーザーの個人用ファイル ディレクトリです。
- それ以外の場合、初期ディレクトリはデスクトップ フォルダーです。
- lpstrFile
パスが含まれている場合、そのパスは初期ディレクトリです。 - それ以外の場合は、lpstrInitialDir
初期ディレクトリを指定します。 - それ以外の場合、アプリケーションで以前に [開く] ダイアログ ボックスまたは [名前を付けて保存 ] ダイアログ ボックスが使用されている場合は、最後に使用したパスが初期ディレクトリとして選択されます。 ただし、アプリケーションが長時間実行されていない場合、保存された選択したパスは破棄されます。
- lpstrInitialDir
が NULL され、現在のディレクトリに指定されたフィルターの種類のファイルが含まれている場合、初期ディレクトリは現在のディレクトリになります。 - それ以外の場合、初期ディレクトリは現在のユーザーの個人用ファイル ディレクトリです。
- それ以外の場合、初期ディレクトリはデスクトップ フォルダーです。
lpstrTitle
型: LPCTSTR
ダイアログ ボックスのタイトル バーに配置する文字列。 このメンバーが NULL
Flags
型: DWORD
ダイアログ ボックスの初期化に使用できるビット フラグのセット。 ダイアログ ボックスが戻ると、ユーザーの入力を示すようにこれらのフラグが設定されます。 このメンバーは、次のフラグの組み合わせにすることができます。
価値 | 意味 |
---|---|
|
ファイル名 リスト ボックスでは、複数の選択が可能です。
OFN_EXPLORER フラグも設定すると、ダイアログ ボックスにはエクスプローラー スタイルのユーザー インターフェイスが使用されます。それ以外の場合は、古いスタイルのユーザー インターフェイスが使用されます。
ユーザーが複数のファイルを選択した場合、lpstrFile バッファーは、現在のディレクトリへのパスと、選択したファイルのファイル名を返します。
nFileOffset メンバーは、最初のファイル名へのオフセット (バイトまたは文字) であり、nFileExtension メンバーは使用されません。 エクスプローラー スタイルのダイアログ ボックスの場合、ディレクトリとファイル名の文字列は NULL 区切り 古いスタイルのダイアログ ボックスにカスタム テンプレートを指定する場合は、ファイル名 リスト ボックスの定義に LBS_EXTENDEDSEL 値が含まれている必要があります。 |
|
ユーザーが存在しないファイルを指定した場合、このフラグにより、ファイルを作成するためのアクセス許可をユーザーに求めるダイアログ ボックスが表示されます。 ユーザーがファイルの作成を選択すると、ダイアログ ボックスが閉じ、関数は指定した名前を返します。それ以外の場合、ダイアログ ボックスは開いたままです。 このフラグを OFN_ALLOWMULTISELECT フラグと共に使用すると、ユーザーは存在しないファイルを 1 つだけ指定できます。 |
|
ユーザーが最近使用したドキュメントを含むファイル システム ディレクトリ内の選択したファイルへのリンクをシステムが追加できないようにします。 このディレクトリの場所を取得するには、CSIDL_RECENT フラグを指定して SHGetSpecialFolderLocation 関数を呼び出します。 |
|
lpfnHook メンバーで指定されたフック関数を有効にします。 |
|
ユーザーがフォルダーを開いたときに、ダイアログ ボックスから OFNHookProc フック プロシージャに CDN_INCLUDEITEM 通知メッセージが送信されます。 ダイアログ ボックスは、新しく開いたフォルダー内の各項目の通知を送信します。 これらのメッセージを使用すると、ダイアログ ボックスがフォルダーの項目リストに表示する項目を制御できます。 |
|
マウスまたはキーボードを使用して、エクスプローラー スタイルのダイアログ ボックスのサイズを変更できるようにします。 既定では、エクスプローラー スタイルの |
|
lpTemplateName メンバーは、hInstance メンバーによって識別されるモジュール内のダイアログ テンプレート リソースの名前へのポインターです。 OFN_EXPLORER フラグが設定されている場合、システムは指定されたテンプレートを使用して、既定のエクスプローラー スタイルのダイアログ ボックスの子であるダイアログ ボックスを作成します。 OFN_EXPLORER フラグが設定されていない場合、システムはテンプレートを使用して、既定のダイアログ ボックスを置き換える古いスタイルのダイアログ ボックスを作成します。 |
|
hInstance メンバーは、プリロードされたダイアログ ボックス テンプレートを含むデータ ブロックを識別します。 このフラグが指定 場合、システムは lpTemplateName を無視します。 OFN_EXPLORER フラグが設定されている場合、システムは指定されたテンプレートを使用して、既定のエクスプローラー スタイルのダイアログ ボックスの子であるダイアログ ボックスを作成します。 OFN_EXPLORER フラグが設定されていない場合、システムはテンプレートを使用して、既定のダイアログ ボックスを置き換える古いスタイルのダイアログ ボックスを作成します。 |
|
[ 既定では、 古いスタイルのユーザー インターフェイスが必要な場合は、OFN_EXPLORER フラグを省略し、代替の古いスタイルのテンプレートまたはフック プロシージャを指定します。 古いスタイルを使用するが、カスタム テンプレートやフック プロシージャは必要ない場合は、常に FALSE |
|
ユーザーは、lpstrDefExtで指定された拡張子とは異なるファイル名拡張子 |
|
ユーザーは、ファイル名 入力フィールドに既存のファイルの名前のみを入力できます。 このフラグを指定し、ユーザーが無効な名前を入力した場合、ダイアログ ボックス プロシージャはメッセージ ボックスに警告を表示します。 このフラグを指定すると、OFN_PATHMUSTEXIST フラグも使用されます。 このフラグは、[開く] ダイアログ ボックスで使用できます。 [名前を付けて保存] ダイアログ ボックスでは使用。 |
|
システムファイルと隠しファイルを強制的に表示し、ユーザー設定を上書きして非表示ファイルを表示または表示しないようにします。 ただし、システムと非表示の両方のマークが付けられたファイルは表示されません。 |
|
[読み取り専用] チェック ボックスを非表示にします。 |
|
古いスタイルのダイアログ ボックスの場合、このフラグにより、ダイアログ ボックスで長いファイル名が使用されます。 このフラグが指定されていない場合、または OFN_ALLOWMULTISELECT フラグも設定されている場合、古いスタイルのダイアログ ボックスでは、スペースを含むファイル名に短いファイル名 (8.3 形式) が使用されます。 エクスプローラー スタイルのダイアログ ボックスでは、このフラグは無視され、常に長いファイル名が表示されます。 |
|
ファイルの検索中にユーザーがディレクトリを変更した場合は、現在のディレクトリを元の値に復元します。
このフラグは、GetOpenFileNameには無効です。 |
|
ダイアログ ボックスに、選択したショートカット (.LNK) ファイル。 この値が指定されていない場合、ダイアログ ボックスは、ショートカットによって参照されるファイルのパスとファイル名を返します。 |
|
古いスタイルのダイアログ ボックスの場合、このフラグにより、ダイアログ ボックスで短いファイル名 (8.3 形式) が使用されます。 エクスプローラー スタイルのダイアログ ボックスでは、このフラグは無視され、常に長いファイル名が表示されます。 |
|
[ネットワーク] ボタンを非表示または無効にします。 |
|
返されたファイルには、読み取り専用] チェック ボックスがオンではなく、書き込みで保護されたディレクトリにありません。 |
|
ダイアログ ボックスを閉じる前に、ファイルは作成されません。 このフラグは、アプリケーションがファイルを create-nonmodify ネットワーク共有に保存する場合に指定する必要があります。 アプリケーションがこのフラグを指定した場合、ライブラリは書き込み保護、完全ディスク、開いているドライブ ドア、またはネットワーク保護をチェックしません。 このフラグを使用するアプリケーションでは、ファイルを閉じた後に再度開くことができないため、ファイル操作を慎重に実行する必要があります。 |
|
一般的なダイアログ ボックスでは、返されるファイル名に無効な文字を使用できます。 通常、呼び出し元のアプリケーションは、FILEOKSTRING メッセージを使用してファイル名をチェックするフック プロシージャを使用します。 編集コントロールのテキスト ボックスが空であるか、スペース以外のテキスト ボックスが含まれている場合は、ファイルとディレクトリの一覧が更新されます。 編集コントロール内のテキスト ボックスに何かが含まれている場合は、nFileOffset |
|
選択したファイルが既に存在する場合、[名前を付けて保存] ダイアログ ボックスでメッセージ ボックスを生成します。 ユーザーは、ファイルを上書きするかどうかを確認する必要があります。 |
|
ユーザーは、有効なパスとファイル名のみを入力できます。 このフラグを使用し、ユーザーが ファイル名 エントリ フィールドに無効なパスとファイル名を入力すると、ダイアログ ボックス関数はメッセージ ボックスに警告を表示します。 |
|
ダイアログ ボックスの作成時に、読み取り専用 チェック ボックスを最初にオンにします。 このフラグは、ダイアログ ボックスが閉じられたときに 読み取り専用] チェック ボックスの状態を示します。 |
|
ネットワーク共有違反が原因で OpenFile 関数の呼び出しが失敗した場合、エラーは無視され、ダイアログ ボックスは選択したファイル名を返すように指定します。 このフラグが設定されていない場合、ダイアログ ボックスは、ユーザーが指定したファイル名に対してネットワーク共有違反が発生したときにフック プロシージャに通知します。 OFN_EXPLORER フラグを設定すると、ダイアログ ボックスによって CDN_SHAREVIOLATION メッセージがフック プロシージャに送信されます。 OFN_EXPLORERを設定しない場合、ダイアログ ボックスは、SHAREVISTRING 登録されたメッセージをフック プロシージャに送信します。 |
|
ダイアログ ボックスに ヘルプ ボタンが表示されます。 |
nFileOffset
型: word
パスの先頭から lpstrFile
nFileExtension
型: word
パスの先頭から lpstrFile
lpstrDefExt
型: LPCTSTR
既定の拡張機能。 GetOpenFileName を
lCustData
型: LPARAM
lpfnHook メンバーによって識別されるフック・プロシージャーにシステムが渡すアプリケーション定義データ。 システムが WM_INITDIALOG メッセージをフック・プロシージャーに送信する場合、メッセージの lParam パラメーターは、ダイアログ・ボックスの作成時に指定された OPENFILENAME 構造体へのポインターです。 フック プロシージャでは、このポインターを使用して、lCustData 値を取得できます。
lpfnHook
型: LPOFNHOOKPROC
フック プロシージャへのポインター。 Flags メンバーに OFN_ENABLEHOOK フラグが含まれている場合を除き、このメンバーは無視されます。
lpTemplateName
型: LPCTSTR
hInstance メンバーによって識別されるモジュール内のダイアログ テンプレート リソースの名前。 番号付きダイアログ ボックス リソースの場合は、MAKEINTRESOURCE マクロによって返される値を指定できます。 Flags メンバーで OFN_ENABLETEMPLATE フラグが設定されていない限り、このメンバーは無視されます。 OFN_EXPLORER フラグが設定されている場合、システムは指定されたテンプレートを使用して、既定のエクスプローラー スタイルのダイアログ ボックスの子であるダイアログ ボックスを作成します。 OFN_EXPLORER フラグが設定されていない場合、システムはテンプレートを使用して、既定のダイアログ ボックスを置き換える古いスタイルのダイアログ ボックスを作成します。
lpEditInfo
このメンバーは条件付きで (#ifdef _MAC
を使用して) コンパイルされるため、Motorola 68K Macintosh コンピューターにのみ適用でき、Windows クライアント オペレーティング システムには適用されません。
lpstrPrompt
このメンバーは条件付きで (#ifdef _MAC
を使用して) コンパイルされるため、Motorola 68K Macintosh コンピューターにのみ適用でき、Windows クライアント オペレーティング システムには適用されません。
pvReserved
型: void*
このメンバーは予約されています。
dwReserved
型: DWORD
このメンバーは予約されています。
FlagsEx
型: DWORD
ダイアログ ボックスの初期化に使用できるビット フラグのセット。 現在、このメンバーには 0 または次のフラグを指定できます。
価値 | 意味 |
---|---|
|
このフラグが設定されている場合、場所バーは表示されません。 このフラグが設定されていない場合、エクスプローラー スタイルのダイアログ ボックスには、よく使用されるフォルダー (お気に入り、デスクトップなど) のアイコンを含む場所バーが含まれます。 |
備考
互換性上の理由から、
手記
commdlg.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして OPENFILENAME を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー | commdlg.h (Windows.h を含む) |
関連項目
概念
GetOpenFileName の
GetSaveFileName を
その他のリソース を
リファレンス
SHGetSpecialFolderLocation の