GetOpenFileName(A)

ユーザーがファイルを開くための「ファイルを開く」ダイアログボックスを作成します。

BOOL GetOpenFileNameA(
    LPOPENFILENAME  pofn
);

COMDLG32.DLL

引数

pofn

ダイアログボックスを初期化するために使用されるOPENFILENAME構造体のアドレスを指定します。関数から制御が返ると、ユーザーが選択したファイルに関する情報が格納されます。

戻り値

ユーザーがファイル名を指定して「OK」ボタンを押すと、戻り値は0以外の値になります。OPENFILENAME構造体のlpstrFileメンバが指すバッファに、ユーザーが選択したファイルのフルパスとファイル名が格納されます。

ユーザーがダイアログボックをキャンセルまたは閉じた場合、もしくはエラーが発生した場合には、戻り値は0になります。拡張エラー情報を取得するには、CommDlgExtendedError関数を使います。この関数は以下のいずれかの値を返します。

0xFFFF (CDERR_DIALOGFAILURE)
0x0001 (CDERR_STRUCTSIZE)
0x0002 (CDERR_INITIALIZATION)
0x0003 (CDERR_NOTEMPLATE)
0x0004 (CDERR_NOHINSTANCE)
0x0005 (CDERR_LOADSTRFAILURE)
0x0006 (CDERR_FINDRESFAILURE)
0x0007 (CDERR_LOADRESFAILURE)
0x0008 (CDERR_LOCKRESFAILURE)
0x0009 (CDERR_MEMALLOCFAILURE)
0x000A (CDERR_MEMLOCKFAILURE)
0x000B (CDERR_NOHOOK)
0x3001 (FNERR_SUBCLASSFAILURE)
0x3002 (FNERR_INVALIDFILENAME)
0x3003 (FNERR_BUFFERTOOSMALL)

解説

エクスプローラスタイルの「開く」ダイアログボックスは、Windowsエクスプローラに似たユーザーインターフェースの特徴を持ちます。このダイアログボックスでは、OFNHookProcフックプロシージャを実装できます。フックプロシージャを有効にするには、OPENFILENAME構造体のFlagsメンバにOFN_EXPLORERおよびOFN_ENABLEHOOKフラグを指定し、lpfnHookメンバにフックプロシージャのアドレスを指定します。

Windowsでは引き続きオールドスタイルの「開く」ダイアログボックスをサポートします。オールドスタイルダイアログボックスを表示するには、OFNHookProcOldStyleフックプロシージャを有効にし、OFN_EXPLORERフラグを設定しないようにします。

ファイルではなくディレクトリを選択するダイアログボックスを表示するには、SHBrowseForFolder関数を使用します。

複数のファイルが選択される場合、ファイル名の総文字数の最大値はオペレーティングシステムおよび関数のバージョンに依存します。

対応情報

Windows 95 以降 / Windows NT 3.1 以降