プレビュー機能付き「ファイルを開く」ダイアログを表示          <TOP>


GetOpenFileNamePreview プレビュー機能付き「ファイルを開く」ダイアログを表示 
GetSaveFileNamePreview プレビュー機能付き「ファイルを保存」ダイアログを表示 

 
'================================================================
'= プレビュー機能付き「ファイルを開く」ダイアログを表示 
'=    (GetOpenFileNamePreview.bas)
'================================================================
#include "Windows.bi"

#define OFN_EXPLORER &H80000            'Explorer風ダイアログ
#define OFN_ALLOWMULTISELECT &H200      '複数ファイルを選択可能にする
#define OFN_CREATEPROMPT &H2000         '指定のファイル名が存在しない時にメッセージボックスを表示
#define OFN_FILEMUSTEXIST &H1000        '存在しないファイル名は入力不可
#define OFN_HIDEREADONLY &H4            '読み取り専用のチェックボックスを非表示
#define OFN_NOCHANGEDIR &H8             '他のサブディレクトリから選択不可
#define OFN_NOREADONLYRETURN &H8000     '読み込み専用ファイルと書きこみ禁止ディレクトリの選択不可
#define OFN_NOVALIDATE &H100            'ファイル名の有効性をチェックしない
#define OFN_OVERWRITEPROMPT &H2         '既存のファイル名を指定した時にメッセージを出す
#define OFN_PATHMUSTEXIST &H800         '有効なパスだけをうけつける
#define OFN_READONLY &H1                '読み取り専用のチェックボックスをチェック
#define OFN_SHOWHELP &H10               'ヘルプボタンを表示

Type OPENFILENAME
    lStructSize       As Long           '構造体のサイズをバイト単位で指定
    hwndOwner         As Long           'ダイアログボックスを所有するウィンドウへのハンドルを指定
    hInstance         As Long           'メモリオブジェクトへのハンドルを指定
    lpstrFilter       As Long           '任意の数のNULL文字で終わる文字列のペアを保持するバッファへのポインタを指定
    lpstrCustomFilter As Long           'ユーザーによって選択されたファイル フィルター文字列のペアが保存される
    nMaxCustFilter    As Long           'lpstrCustomFilterメンバのバッファ サイズを指定
    nFilterIndex      As Long           'フィルターの初期インデックスを指定
    lpstrFile         As Long           '文字列バッファを指定
    nMaxFile          As Long           'lpstrFileメンバのバッファ サイズを指定
    lpstrFileTitle    As Long           '選択されたファイルの名前、および拡張子を保存するための文字列バッファを指定
    nMaxFileTitle     As Long           'lpstrFileTitle メンバのバッファ サイズを指定
    lpstrInitialDir   As Long           '初期ディレクトリのパスを指定
    lpstrTitle        As Long           'ダイアログボックスのタイトルバーに表示する文字列を指定
    Flags             As Long           'イアログボックスの初期化フラグを、「OFN_・・・・」の定数を組み合わせて指定
    nFileOffset       As Integer        'lpstrFileメンバが示すパス内の、ファイル名の位置がバッファの先頭から何バイト目であるかを示す
    nFileExtension    As Integer        'lpstrFileメンバが示すパス内の、拡張子の位置がバッファの先頭から何バイト目であるかを示す
    lpstrDefExt       As Long           'デフォルト拡張子の文字列を示す
    lCustData         As Long           'lpfnHookメンバが示すフック プロシージャへ渡すデータを指定
    lpfnHook          As Long           'フック プロシージャへのポインタを指定
    lpTemplateName    As Long           'hInstanceメンバが示すモジュール内にあるダイアログ テンプレートを指定
End Type

' プレビュー機能付き「ファイルを開く」ダイアログを表示する
Declare Function Api_GetOpenFileNamePreview& Lib "msvfw32" Alias "GetOpenFileNamePreviewA" (ByRef lpofn As OPENFILENAME)

' プレビュー機能付き「ファイルを保存」ダイアログを表示する
Declare Function Api_GetSaveFileNamePreview& Lib "msvfw32" Alias "GetSaveFileNamePreviewA" (ByRef lpofn As OPENFILENAME)

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var ofn As OPENFILENAME
    Var Ret As Long

    ofn.lStructSize = Len(ofn)
    ofn.hInstance = GethInst
    ofn.hwndOwner = GethWnd
    ofn.lpstrTitle = StrAdr("ファイルを開く" & Chr$(0))
    ofn.lpstrFilter = StrAdr("WAVEファイル(*.wav)" & Chr$(0) & "*.wav" & Chr$(0) & "MIDIファイル(*.mid)" & Chr$(0) & "*.mid" & Chr$(0) & "AVIファイル(*.avi)" & Chr$(0) & "*.avi" & Chr$(0) & "AVIファイル(*.avi)" & Chr$(0) & "*.*" & Chr$(0))
    ofn.lpstrFile = StrAdr(String$(250, Chr$(0)) & Chr$(0))
    ofn.nMaxFile = 250
    ofn.flags = OFN_PATHMUSTEXIST Or OFN_FILEMUSTEXIST Or OFN_HIDEREADONLY Or OFN_OVERWRITEPROMPT

    Ret = Api_GetOpenFileNamePreview(ofn)

    ofn.lpstrTitle = StrAdr("名前を付けて保存" & Chr$(0))
    Ret = Api_GetSaveFileNamePreview(ofn)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End