こんにちは、sinです。
神野ありがとうございました。
> GetTextMetrics()で文字高さを求めて、
> それより下(縦書きなら右?)かどうかを判断するのは
> どうでしょうか?
こんな感じで出来ました。
--------------------------------------------------------------------
case WM_MOUSEMOVE:
POINT Pos;
::GetCursorPos(&Pos);
// クライアント座標に変換
::ScreenToClient(hREdit, &Pos);
int mIndex, gIndex, TextLen;
DWORD sp, pf;
sp = ::SendMessage(hREdit, EM_CHARFROMPOS, 0, (LPARAM)&Pos);
if(sp != -1) {
CHARRANGE cr;
mIndex = LOWORD(sp);
TextLen = strlen(TextRange);
pf = ::SendMessage(hREdit, EM_POSFROMCHAR, (WPARAM)TextLen, 0);
gIndex = HIWORD(pf);
TEXTMETRIC tm;
memset(&tm, 0, sizeof(TEXTMETRIC));
HDC reDC;
reDC = ::GetDC(hREdit);
::GetTextMetrics(reDC, &tm);
::ReleaseDC(hREdit, reDC);
gIndex += tm.tmHeight;
if((mIndex >= TextLen) || (gIndex <= Pos.y)) {
::SetCursor(hDefaultCursor);
return TRUE;
}
(以下略)
神野ありがとうございました。
> GetTextMetrics()で文字高さを求めて、
> それより下(縦書きなら右?)かどうかを判断するのは
> どうでしょうか?
こんな感じで出来ました。
--------------------------------------------------------------------
case WM_MOUSEMOVE:
POINT Pos;
::GetCursorPos(&Pos);
// クライアント座標に変換
::ScreenToClient(hREdit, &Pos);
int mIndex, gIndex, TextLen;
DWORD sp, pf;
sp = ::SendMessage(hREdit, EM_CHARFROMPOS, 0, (LPARAM)&Pos);
if(sp != -1) {
CHARRANGE cr;
mIndex = LOWORD(sp);
TextLen = strlen(TextRange);
pf = ::SendMessage(hREdit, EM_POSFROMCHAR, (WPARAM)TextLen, 0);
gIndex = HIWORD(pf);
TEXTMETRIC tm;
memset(&tm, 0, sizeof(TEXTMETRIC));
HDC reDC;
reDC = ::GetDC(hREdit);
::GetTextMetrics(reDC, &tm);
::ReleaseDC(hREdit, reDC);
gIndex += tm.tmHeight;
if((mIndex >= TextLen) || (gIndex <= Pos.y)) {
::SetCursor(hDefaultCursor);
return TRUE;
}
(以下略)