user32: Implement IMR_QUERYCHARPOSITION handling in the edit control.

This commit is contained in:
Aric Stewart 2013-05-07 08:06:22 -05:00 committed by Alexandre Julliard
parent b98ef8f087
commit 652af4e294
2 changed files with 28 additions and 0 deletions

View File

@ -5169,6 +5169,25 @@ LRESULT EditWndProc_common( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, B
case WM_IME_CONTROL:
break;
case WM_IME_REQUEST:
switch (wParam)
{
case IMR_QUERYCHARPOSITION:
{
LRESULT pos;
IMECHARPOSITION *chpos = (IMECHARPOSITION *)lParam;
pos = EDIT_EM_PosFromChar(es, es->selection_start + chpos->dwCharPos, FALSE);
chpos->pt.x = LOWORD(pos);
chpos->pt.y = HIWORD(pos);
chpos->cLineHeight = es->line_height;
chpos->rcDocument = es->format_rect;
result = 1;
break;
}
}
break;
default:
result = DefWindowProcT(hwnd, msg, wParam, lParam, unicode);
break;

View File

@ -129,6 +129,15 @@ typedef struct _tagCOMPOSITIONFORM
typedef BOOL (CALLBACK* IMCENUMPROC)(HIMC, LPARAM);
typedef struct _tagIMECHARPOSITION
{
DWORD dwSize;
DWORD dwCharPos;
POINT pt;
UINT cLineHeight;
RECT rcDocument;
} IMECHARPOSITION, *LPIMECHARPOSITION;
/* wParam for WM_IME_CONTROL */
#define IMC_GETCANDIDATEPOS 0x0007
#define IMC_SETCANDIDATEPOS 0x0008