16,551
社区成员
发帖
与我相关
我的任务
分享/*
* IMENotyHandle:
*
* Handle WM_IME_NOTIFY messages.
*/
LONG IMENotyHandle(HIMC hUICurIMC, HWND hWnd, UINT message, WPARAM wParam, LPARAM
lParam)
{
LONG lRet = 0L;
LPINPUTCONTEXT lpIMC;
(!(lpIMC = ImmLockIMC(hUICurIMC)))
0L;
switch (wParam)
{
IMN_CLOSESTATUSWINDOW:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_CLOSESTATUSWINDOW\\n\");
/// hide the status window
g_pStatus->Hide;
;
IMN_OPENSTATUSWINDOW:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_OPENSTATUSWINDOW\\n\");
/// create the status window, but don\'t show
g_pStatus->Create(hWnd);
;
IMN_OPENCANDIDATE:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_OPENCANDIDATE\\n\");
;
IMN_CHANGECANDIDATE:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_CHANGECANDIDATE\\n\");
;
IMN_CLOSECANDIDATE:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_CLOSECANDIDATE\\n\");
;
IMN_SETCONVERSIONMODE:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_SETCONVERSIONMODE\\n\");
/// repa the status window
g_pStatus->Repa;
;
IMN_SETSENTENCEMODE:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_SETSENTENCEMODE\\n\");
;
IMN_SETOPENSTATUS:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_SETOPENSTATUS\\n\");
/// repa the status window
g_pStatus->Repa;
;
IMN_SETCANDIDATEPOS:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_SETCANDIDATEPOS\\n\");
;
IMN_SETCOMPOSITIONFONT:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_SETCOMPOSITIONFONT\\n\");
;
IMN_SETCOMPOSITIONWINDOW:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_SETCOMPOSITIONWINDOW\\n\");
/// adjust the postion of comp and cand windows
POINT ptSrc;
SIZE szOff;
HDC hDC;
ptSrc = lpIMC->cfCompForm.ptCurrentPos;
ClientToScreen(lpIMC->hWnd, &ptSrc);
hDC = GetDC(lpIMC->hWnd);
GetTextExtentPo(hDC,\"A\",1,&szOff);
ReleaseDC(lpIMC->hWnd,hDC);
g_ptTopLeft.x = ptSrc.x + szOff.cx;
g_ptTopLeft.y = ptSrc.y + szOff.cy;
;
IMN_GUIDELINE:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_GUIDELINE\\n\");
;
IMN_SETSTATUSWINDOWPOS:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_SETSTATUSWINDOWPOS\\n\");
;
IMN_PRIVATE:
TRACE(\"UIWnd:WM_IME_NOTIFY:IMN_PRIVATE\\n\");
;
default:
;
}
ImmUnlockIMC(hUICurIMC);
lRet;
}