by mit » 2007年7月25日(水) 12:01
これが問題のコードです。
汚くてすいませんが、よろしくお願いします。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Sub MainWnd_IDM_OPEN_MenuClick()
dim hEdit as HANDLE
dim hOpenFile as HANDLE
dim ofn as OPENFILENAME
dim pszFileName as *Byte
dim dwFileSize as DWORD
dim dwAccessByte as DWORD
dim buff as *Byte
'ファイル名用メモリ確保
pszFileName = calloc(MAX_PATH)
if(pszFileName = NULL) then Exit Sub
'構造体の初期化
FillMemory(VarPtr(ofn), sizeof(OPENFILENAME), 0)
with ofn
.lStructSize = sizeof(OPENFILENAME)
.hwndOwner = hMainWnd
.lpstrFilter = Ex"テキスト ファイル(*.txt)\0*.txt\0すべてのファイル(*.*)\0*\0\0"
.nFilterIndex = 1
.lpstrFile = pszFileName
.nMaxFile = MAX_PATH
.lpstrTitle = "Open file"
.Flags = OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST
.lpstrDefExt="*"
end with
'ファイル選択
if (GetOpenFileName(ofn) = 0) then
free(pszFileName)
Exit Sub
end if
hOpenFile = CreateFile(ofn.lpstrFile, GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, ByVal NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
if(hOpenFile = INVALID_HANDLE_VALUE) then
MessageBox(hMainWnd, "オープン失敗", "TextEditor", MB_OK)
free(pszFileName)
Exit Sub
end if
'ファイルサイズ取得
dwFileSize = GetFileSize(hOpenFile, NULL)
buff = calloc(dwFileSize + 1)
if(buff = NULL) then
CloseHandle(hOpenFile)
free(pszFileName)
Exit Sub
end if
'ファイル内容をバッファにコピー
ReadFile(hOpenFile, buff, dwFileSize, VarPtr(dwAccessByte), ByVal NULL)
CloseHandle(hOpenFile)
'エディットボックスに反映
hEdit = GetDlgItem(hMainWnd, EditBox1)
SetWindowText(hEdit, buff)
SetFocus(hEdit)
free(buff)
free(pszFileName)
End Sub
ただ、付属サンプルのテキストエディタでも発生するので、
もしかしたら別の所にも問題があるのかもしれませんが……。
これが問題のコードです。
汚くてすいませんが、よろしくお願いします。
[hide][code]
Sub MainWnd_IDM_OPEN_MenuClick()
dim hEdit as HANDLE
dim hOpenFile as HANDLE
dim ofn as OPENFILENAME
dim pszFileName as *Byte
dim dwFileSize as DWORD
dim dwAccessByte as DWORD
dim buff as *Byte
'ファイル名用メモリ確保
pszFileName = calloc(MAX_PATH)
if(pszFileName = NULL) then Exit Sub
'構造体の初期化
FillMemory(VarPtr(ofn), sizeof(OPENFILENAME), 0)
with ofn
.lStructSize = sizeof(OPENFILENAME)
.hwndOwner = hMainWnd
.lpstrFilter = Ex"テキスト ファイル(*.txt)\0*.txt\0すべてのファイル(*.*)\0*\0\0"
.nFilterIndex = 1
.lpstrFile = pszFileName
.nMaxFile = MAX_PATH
.lpstrTitle = "Open file"
.Flags = OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST
.lpstrDefExt="*"
end with
'ファイル選択
if (GetOpenFileName(ofn) = 0) then
free(pszFileName)
Exit Sub
end if
hOpenFile = CreateFile(ofn.lpstrFile, GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, ByVal NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
if(hOpenFile = INVALID_HANDLE_VALUE) then
MessageBox(hMainWnd, "オープン失敗", "TextEditor", MB_OK)
free(pszFileName)
Exit Sub
end if
'ファイルサイズ取得
dwFileSize = GetFileSize(hOpenFile, NULL)
buff = calloc(dwFileSize + 1)
if(buff = NULL) then
CloseHandle(hOpenFile)
free(pszFileName)
Exit Sub
end if
'ファイル内容をバッファにコピー
ReadFile(hOpenFile, buff, dwFileSize, VarPtr(dwAccessByte), ByVal NULL)
CloseHandle(hOpenFile)
'エディットボックスに反映
hEdit = GetDlgItem(hMainWnd, EditBox1)
SetWindowText(hEdit, buff)
SetFocus(hEdit)
free(buff)
free(pszFileName)
End Sub
[/code][/hide]
ただ、付属サンプルのテキストエディタでも発生するので、
もしかしたら別の所にも問題があるのかもしれませんが……。