ファイルオープンダイアログが呼び出されない
Posted: 2008年10月15日(水) 13:33
Win32プログラミング講座Step8構造体とファイルオープンダイアログhttp://www.activebasic.com/help_center/index.html?win32の「OPENFILENAME構造体とGetOpenFileName関数」に掲載されているサンプルを実行したところ、ダイアログが表示されません。
「If GetOpenFileName(ofn)=0 Then」の行でステップインを実行しても、GetOpenFileNameの中に入っていかずに、ExitProcess(0)に行ってしまいます。
buffer=ZeroString(MAX_PATH)はコンパイルでエラーになったので、buffer=String$(MAX_PATH,"0")に書き換えました。
ActiveBasic5.0.0.5、WindowXPHomeSP3です。よろしくお願いいたします。
「If GetOpenFileName(ofn)=0 Then」の行でステップインを実行しても、GetOpenFileNameの中に入っていかずに、ExitProcess(0)に行ってしまいます。
buffer=ZeroString(MAX_PATH)はコンパイルでエラーになったので、buffer=String$(MAX_PATH,"0")に書き換えました。
ActiveBasic5.0.0.5、WindowXPHomeSP3です。よろしくお願いいたします。
コード: 全て選択
Dim ofn As OPENFILENAME
Dim FileFilter As String
Dim buffer As String
'OPENFILENAME構造体の初期化
FillMemory(VarPtr(ofn),Len(ofn),0)
ofn.lStructSize=Len(ofn) '構造体のサイズ
ofn.hwndOwner=GetDesktopWindow() '親ウィンドウ(ここではデスクトップ ウィンドウを指定)
FileFilter="テキスト ファイル(*.txt)" + Chr$(0) + "*.txt" + Chr$(0) + _
"すべてのファイル(*.*)" + Chr$(0) + "*" + Chr$(0)
ofn.lpstrFilter=StrPtr(FileFilter)
ofn.nFilterIndex=1 'ファイル フィルターの数
'buffer=ZeroString(MAX_PATH) 'パスを格納するための文字列バッファを確保
buffer=String$(MAX_PATH,"0") 'パスを格納するための文字列バッファを確保
ofn.lpstrFile=StrPtr(buffer)
ofn.nMaxFile=MAX_PATH 'バッファのバイト数
ofn.lpstrTitle="ファイルを開く" 'タイトル
ofn.Flags=OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST
'「ファイルを開く」ダイアログ ボックスを表示
If GetOpenFileName(ofn)=0 Then
'キャンセル ボタンが押されたとき(プロセス終了)
ExitProcess(0)
End If
MessageBox(0,ofn.lpstrFile,"選択されたファイルのパス",MB_OK)
'プロセス終了
ExitProcess(0)