こんにちは、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;
     }
                (以下略)