ab.com コミュニティ https://www.activebasic.com/forum/ |
|
ファイルオープンダイアログが呼び出されない https://www.activebasic.com/forum/viewtopic.php?t=2486 |
ページ 1 / 1 |
作成者: | 解散総選挙 [ 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です。よろしくお願いいたします。 コード: 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) |
作成者: | イグトランス [ 2008年10月15日(水) 17:08 ] |
記事の件名: | |
buffer = String$(MAX_PATH, Ex"\0")とすると動きました。String$にEx"\0"とするのが真にZeroStringと等しいです。 String$(MAX_PATH, "0")だと"00000000000000000000..."という文字列になり,そんな名前のファイルがないということでエラーになったのではないかと思います。 ところで,ZeroStringがエラーになるということですが,次のCPか何かではAB4で可能だった(今回のような)使い方ができるように戻そうかなと考えています。そのほうがAB4との互換性が保てますし。 あと,ofn.hwndOwnerはGetDesktopWindow()ではなく,単に0で十分です。むしろそっちのほうが好ましいです。 |
作成者: | 解散総選挙 [ 2008年10月15日(水) 17:42 ] |
記事の件名: | |
ありがとうございます。 buffer = String$(MAX_PATH, Ex"\0")、ofn.hwndOwner=0にして、 If GetOpenFileName(ofn)=0 Thenの行でステップオーバーすると、 デバッグウィンドウで 例外処理(code:&H000006BA) スレッド(&HF04)でアクセス違反がありました(EIP=&H77E6078A/ESP=&H0012E070)。 と表示され、 「"File.ab"が見つかりません。格納されているディレクトリを指定してください」というダイアログが出現しました。 |
作成者: | 解散総選挙 [ 2008年10月27日(月) 16:37 ] |
記事の件名: | |
File.abというファイルを探したところ、ライブラリーの中にあったので、そのディレクトリを指定したところ、ファイルオープンダイアログは呼び出されず、 例外処理(code:&H000006BA) スレッド(&H168)でアクセス違反がありました(EIP=&H77E6078A/ESP=&H0012FB9C)。 がデバッグウィンドウに表示されました。よろしくお願いいたします。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |