int CIMEWnd::StartIME () { icon.LoadFile ("comm/ime.gif",8); logo.LoadFile ("comm/imelogo.bmp",1); imeInstance = this; SetRect (&imeRect,IMERECT_LEFT,IMERECT_TOP,IMERECT_LEFT+IME_WIDTH,IMERECT_TOP+IME_HEIGHT); SetRect (&subimeRect,SUBIMERECT_LEFT,SUBIMERECT_TOP,SUBIMERECT_LEFT+IME_WIDTH,SUBIMERECT_TOP+IME_HEIGHT); SetRect(&refRect,IMERECT_LEFT,IMERECT_TOP,IMERECT_LEFT+2*IME_WIDTH+5,IMERECT_TOP+IME_HEIGHT); m_hWnd=create_container_win (); if(m_hWnd != HWND_INVALID) { int ret = InitIME(); if(ret != 0) return ret; RegisterKeyMsgHook(this,keyboardHook); return 0; } return -1; }
GHANDLE mgiCreateIMEContainer (int max_ime_wins, BOOL with_cont_win) { int i; if (ime_cont != NULL) { fprintf (stderr, "The IME container already existed!\n"); return 0; } ime_cont = malloc (sizeof(IME_CONTAINER)); ime_cont->cont_hwnd = HWND_INVALID; ime_cont->max_ime_windows = max_ime_wins; ime_cont->cur_wins = 0; ime_cont->ime_wins = malloc (sizeof(IME_WIN)*max_ime_wins); for (i = 0; i < max_ime_wins; i++) ime_cont->ime_wins[i].ime_hwnd = HWND_INVALID; if (with_cont_win) ime_cont->cont_hwnd = create_container_win (); return (GHANDLE)ime_cont; }