|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Processing the WM_IME_COMPOSITION Message
Applications that process the WM_IME_COMPOSITION message test the bits in lParam parameter and call the ImmGetCompositionString function to retrieve the indicated string or data. The following example checks for the result string, allocates sufficient memory for the string, and retrieves the result string from the IME:
HIMC hIMC; HWND hWnd; DWORD dwSize; HGLOBAL hstr; LPSTR lpstr;
case WM_IME_COMPOSITION: if (lParam & GCS_RESULTSTR) { hIMC = ImmGetContext(hWnd);
If (!hIMC) MyError(ERROR_NULLCONTEXT);
// Get the size of the result string. dwSize = ImmGetCompositionString(hIMC, GCS_RESULTSTR, NULL, 0);
// increase buffer size for NULL terminator, // maybe it is in UNICODE dwSize += sizeof(WCHAR);
hstr = GlobalAlloc(GHND,dwSize); if (hstr == NULL) MyError(ERROR_GLOBALALLOC);
lpstr = GlobalLock(hstr); if (lpstr == NULL) MyError(ERROR_GLOBALLOCK);
// Get the result strings that is generated by IME into lpstr. ImmGetCompositionString(hIMC, GCS_RESULTSTR, lpstr, dwSize); ImmReleaseContext(hWnd, hIMC);
// add this string into text buffer of application
GlobalUnlock(hstr); GlobalFree(hstr); }
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Обработка Сообщения WM_IME_COMPOSITION
Приложения, которые обрабатывают тесту сообщения WM_IME_COMPOSITION биты в параметре lParam и вызывать функцию ImmGetCompositionString, чтобы извлекать указанную строку или данные. Следующий пример проверяет на наличие строки результата, распределяет достаточную память для строки и извлекает строку результата из IME:
HIMC hIMC; HWND hWnd; DWORD dwSize; HGLOBAL hstr; LPSTR lpstr;
случай WM_IME_COMPOSITION: если (lParam & GCS_RESULTSTR) { hIMC = ImmGetContext(hWnd);
Если (!hIMC) MyError(ERROR_NULLCONTEXT);
// Получите размер строки результата. dwSize = ImmGetCompositionString(hIMC, GCS_RESULTSTR, НЕДЕЙСТВИТЕЛЬНЫЙ, 0);
// буферный размер увеличения для НЕДЕЙСТВИТЕЛЬНОГО терминатора, // может быть это - в UNICODE dwSize += sizeof(WCHAR);
hstr = GlobalAlloc(GHND,dwSize); если (hstr == НЕДЕЙСТВИТЕЛЬНЫЙ) MyError(ERROR_GLOBALALLOC);
lpstr = GlobalLock(hstr); если (lpstr == НЕДЕЙСТВИТЕЛЬНЫЙ) MyError(ERROR_GLOBALLOCK);
// Получите строки результата, которые сгенерированы IME в lpstr. ImmGetCompositionString(hIMC, GCS_RESULTSTR, lpstr, dwSize); ImmReleaseContext(hWnd, hIMC);
// добавьте эту строку в текстовый буфер приложения
GlobalUnlock(hstr); GlobalFree(hstr); }
|
|
|
|
| |