ステップ11 「テキスト エディタを作る」の「開く」メニュー イベントの
'hEditにフォーカスをセット
SetFocus(hEdit)
のあとに以下のコードを追加しタイトルバーにファイル名を表示させようとしました
'タイトルバーにファイル名を表示
Dim DrivePath As String
Dim DirPath As String
Dim Fname As String
Dim ExName As String
_splitpath(FileName, DrivePath, DirPath, Fname, ExName)
SetWindowText(hMainWnd, Fname)
デバックで動作を確認すると、メニューからファイルを開くを選らび目的のファイルを選択し開いた瞬間に落ちてしまいます。このときにエラーはでませんでした。
因みに
SetWindwoText(hMainWnd, FileName)
だけならフルパスのファイル名がタイトルバーに設定されました
また、ファイル名を分割した後
MessageBox(0,Fname,"",MB_OK)
で確認する事まではできました。しかしOKを押した後ですぐに落ちてしまいました。理由がわからずバグかと思われましたのでここに投稿させていただきます。
ファイル名を分割した後に落ちる
-
- 記事: 203
- 登録日時: 2005年5月31日(火) 20:14
- お住まい: 兵庫県
Re: ファイル名を分割した後に落ちる
コード: 全て選択
Dim Fname As String
Fname = ZeroString(MAX_PATH)
_splitpath(FileName, NULL, NULL, Fname, NULL)
_splitpath関数(に限りませんが)で文字列を返してもらうときには、返してもらう変数に領域を確保しないとエラーか強制終了になります(これを行うのがZeroStringの行)。
また、取得しなくてもいい要素は、NULLを指定して受け取らないようにすることができます。私が書いた_splitpathの行でNULLが3つもあるのはそういうことです。
もし他の要素も欲しい場合、文字列変数にZeroString関数で適当な領域(サイズがわからなければMAX_PATHだけあれば確実)を確保し、それを引数に指定してください。
つまり、ABのバグではありません(^^;