На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

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);
}



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz