「ファイルを開く」ダイアログを表示 <TOP>
GetOpenFileName 「ファイルを開く」ダイアログを表示 lstrcat ある文字列の末尾に別の文字列を結合
'================================================================ '= 「ファイルを開く」ダイアログを表示 '= (GetOpenFileName.bas) '================================================================ #include "Windows.bi" 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_GetOpenFileName& Lib "comdlg32" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) ' ある文字列の末尾に別の文字列を結合 Declare Function Api_lstrcat& Lib "kernel32" Alias "lstrcatA" (ByVal lpString1$, ByVal lpString2$) Var Shared Button1 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var ofn As OPENFILENAME Var Ret As Long ofn.lStructSize = Len(ofn) ofn.hwndOwner = GethWnd ofn.hInstance = GethInst ofn.lpstrFilter = Api_lstrcat("テキストファイル (*.txt)" & Chr$(0) & "*.txt" & Chr$(0) & "全てのファイル (*.*)" & Chr$(0) & "*.*" & Chr$(0), "") ofn.lpstrFile = Api_lstrcat(Space$(254) & Chr$(0), "") ofn.nMaxFile = 255 ofn.lpstrFileTitle = StrAdr(Space$(254) & Chr$(0)) ofn.nMaxFileTitle = 255 ofn.lpstrInitialDir = StrAdr("C:\" & Chr$(0)) ofn.lpstrTitle = StrAdr("ファイルを開く" & Chr$(0)) ofn.flags = 0 Ret = Api_GetOpenFileName(ofn) If Ret = 0 Then A% = MessageBox("", "「キャンセル」が押されました!", 0, 2) Else A% = MessageBox("", "「開く」が押されました!", 0, 2) End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End