どうも、初めまして。
ABのバージョン4から、使用させて頂いている。a-code といいます。
AB4.04.00を現在使用中なのですが、
GetOpenFileName のAPIが何故かうまく動作してくれません。
当初、OPENFILENAME の引数を誤って指定しているのかと思い、
色々、試行錯誤しましたが、どうもうまく動作しませんでした。
そこで、ヘルプセンターにあった、
Win32プログラミング講座 ~ Step30. MCIコマンドで音楽ファイルを再生する ~
のURL取得処理をそのまま、自分のソースに記述してみたところ、それでも動作しませんでした。
http://www.discoversoft.net/help_center ... html?win32
Sub MainWnd_OpenButton_Click()
Dim ofn As OPENFILENAME
Dim buffer[MAX_PATH-1] As Byte
'ファイル名を取得
ofn.lStructSize=76
ofn.hwndOwner=hMainWnd
ofn.lpstrFilter=Ex"音楽 ファイル(*.wav;*.mid;*.mp3)\0*.wav;*.mid;*.mp3\0すべてのファイル(*.*)\0*\0\0"
ofn.nFilterIndex=1
ofn.nMaxFile=MAX_PATH
ofn.lpstrFile=buffer
GetOpenFileName(ofn)
'テキストボックスにパスを設定する
SetWindowText(GetDlgItem(hMainWnd,Static_Path),ofn.lpstrFile)
End Sub
発生するエラーは、
『例外処理 code:6B5』というメッセージボックスが表示されます。
また、ActiveBasicLife のusher@@様のサンプルをダウンロードして試しましたが、これも同様のエラーが発生致します。
http://abfan.active.client.jp/030.html
ABのIncludeフォルダの、api_commdlg.sbp にGetOpenFileName と OPENFILENAME が宣言されているのは確認しましたし、
ABにバグがあるのか、上記サンプルを ABのバージョン4で動作させる事に問題があるのかが、分かりません。
Debugでは、『Callback.wbp』にて、ボタンクリック時のエラーとして最終的に出力されるようですが、その原因を特定する事が出来ませんでした。
また、過去ログを検索したところ、
『CallBack関数でアクセス違反が起きる』も同じ原因だと思われます。
http://www.discoversoft.net/forum/viewt ... enFileName
ソース上のミスなのか、AB側のバグなのか、ソースとABバージョンの違いが原因なのか分からないので、一応、プログラミング掲示板に書き込みをさせて頂きました。
原因が、わかる方がいらっしゃいましたら、お力を貸して頂けないでしょうか。