掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Sendmessageでのテキスト行取得の異常を回避するには? (ID:74753)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
SendMessage(Targethwnd, &HB0, 0, 0)の戻り値の上位16ビットに wParamの下位16ビットの値が入ってくると思いますが、 wParam > 32767のとき、戻り値 > 2147483647 となり、 オーバーフローします。 というわけで、第二引数がEM_GETSELのときに SendMessageの戻り値を利用することに問題があります。 wParamを利用してください。 コーディング例 Private Const EM_LINEFROMCHAR = &HC9 Private Const EM_LINEINDEX = &HBB Private Const EM_GETSEL = &HB0 '中略 LineNum = SendMessage(obj.hWnd, EM_LINEFROMCHAR, -1, 0) + 1 LineIndex = SendMessage(obj.hWnd, EM_LINEINDEX, -1, 0) Call SendMessage(obj.hWnd, EM_GETSEL, VarPtr(lngSelStart), 0) CursorPos = lngSelStart - LineIndex MsgBox CStr(LineNum) & "行 " & CStr(CursorPos) & "列" '以下略 VarPtrはVBでは隠れ関数化してますから、 こういうコーディングを見かけないのも無理ないかもしれません。 (C/C++で言うところのポインタみたいなもんです)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.