<Return[G]><Top>

GetOpenFileName

Declare Function Api_GetOpenFileName& Lib "comdlg32" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME)

Declare Function GetOpenFileName Lib "comdlg32" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

[ファイルを開く]ダイアログボックスを作成する。ユーザーはこのダイアログボックスで、開きたい 1 つまたは複数のファイルのドライブ、ディレクトリ、名前を指定できる。

パラメータ
lpofn
    [入出力]ダイアログボックスの初期化に使う情報を保持する OPENFILENAME 構造体へのポインタを指定する。

    GetOpenFileName 関数から制御が返ると、この構造体に、ユーザーが選択したファイルに関する情報が格納される。

戻り値
    ユーザーがファイルを指定して[OK]ボタンをクリックすると、0 以外の値が返る。

    このとき、OPENFILENAME 構造体の lpstrFile メンバは、ユーザーが選択したフルパスおよびファイル名を保持する。
    ユーザーがダイアログボックスをキャンセルしたり閉じた場合、またはエラーが発生した場合は 0 が返る。拡張エラー情報を取得するには、

    CommDlgExtendedError 関数を使う。この関数は、次の値のいずれかを返すことがある。
    CDERR_DIALOGFAILURE
    CDERR_FINDRESFAILURE
    CDERR_NOHINSTANCE
    CDERR_INITIALIZATION
    CDERR_NOHOOK
    CDERR_LOCKRESFAILURE
    CDERR_NOTEMPLATE
    CDERR_LOADRESFAILURE
    CDERR_STRUCTSIZE
    CDERR_LOADSTRFAILURE
    FNERR_BUFFERTOOSMALL
    CDERR_MEMALLOCFAILURE
    FNERR_INVALIDFILENAME
    CDERR_MEMLOCKFAILURE
    FNERR_SUBCLASSFAILURE

解説
    Windows 95/98 と Windows NT 4.0 は、「エクスプローラ」に似たスタイルのユーザーインターフェイスを備えた[ファイルを開く]ダイアログ

    ボックスを既定で表示する。「エクスプローラ」スタイルの[ファイルを開く]ダイアログボックス用のフックプロシージャ OFNHookProc を提

    供することもできる。このフックプロシージャを有効にするには、OPENFILENAME 構造体の Flags メンバ内で CC_ENABLEHOOK フラグ

    をセットし、lpfnHook メンバでそのフックプロシージャのアドレスを指定する。
    Windows 95/98 と Windows NT/2000 は、Windows 3.1 または Windows 3.51 のユーザーインターフェイスとの整合性を維持したいアプリ

    ケーション用に、古いスタイルの[ファイルを開く]ダイアログボックスを引き続きサポートする。古いスタイルの[ファイルを開く]ダイアログボ 

    ックスを表示するには、フックプロシージャ OFNHookProcOldStyle を有効にし、OFN_EXPLORER フラグをクリアする。ユーザーにファイル

    ではなくディレクトリの選択を求めるダイアログボックスを表示するには、SHBrowseForFolder 関数を呼び出す。
    Windows 2000 では、OPENFILENAME 構造体が拡張され、いくつかのメンバが追加されている。しかし、この結果、従来のオペレーテ

    ィングシステムでアプリケーションを実行するときに問題を引き起こすことになる。アプリケーションが Windows 95/98 および Windows NT 4.0

    で現在のヘッダーを使うには、#define "/D_WIN32_WINNT=0x0400" と記述するか、OPENFILENAME の lStructSize メンバ

    で OPENFILENAME_SIZE_VERSION_400 をセットする。