<Return[G]><Top>

GetSaveFileName

Declare Function Api_GetSaveFileName& Lib "comdlg32" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME)

Declare Function GetSaveFileName Lib "comdlg32" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long

[ファイル名を付けて保存]ダイアログボックスを作成する。ユーザーはこのダイアログボックスで、保存したいファイルのドライブ、ディレクトリ、名前を指定できる。

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

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

戻り値
    ユーザーがファイルを指定して[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 フラグをクリアする。
    Windows 2000 では、OPENFILENAME 構造体が拡張され、いくつかのメンバが追加されている。しかし、この結果、従来のオペレーテ

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

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

    OPENFILENAME_SIZE_VERSION_400 をセットする。