if (hIMC - NULL) return i;
nComSize - ImmGetCompositionStringWChlMC.
GCSJESULTSTR. (LPVOID)szComStr. sizeof(szComStr));

продолжение &

Ввод иероглифов

Листинг 9.3 {продолжение)

//Получение строки UNICODE

ImmReleaseContextChWnd. hIMC): //Освобождение контекста if (mjiComSize > 0)szComStr[mjiComSize/2] - 0;

}

else return i: //Сообщение есть, но это не конец строки

}
return i;
}

В других продуктах Microsoft также предусматривается возможность применения широких символов. Например, SQL Server хранит данные полей типа nchar, nvarchar, ntext в UNICODE и позволяет заполнять их из редактора IME. Для доступа к ним через драйвер ODBC предусмотрен тип SQL_C__TCHAR. Но тексты строки запроса, даже заданные в UNICODE, сервер преобразует в ANSI. Необходимо явно указывать при помощи символа N, что в апострофах находится строка символов UNICODE.

Рассмотренный пример показывает, что, несмотря на хранение внутренних данных Windows в стандарте UNICODE, перевод проектов на UNICODE может потребовать значительных доработок. Мало того, элемент Edit не обрабатывает сообщения от редактора IME. Если ему при помощи функции SetDlgltemTextC) передать строку UNICODE, содержащую иероглифы, то они будут отображаться в поле ввода как вопросительные знаки. Это заставило в данном примере перехватить сообщения WMSETTEXT, WMGETTEXT и самостоятельно организовать обмен с приложением.

Скелетный проект Для компактного описания последующих примеров в папку Template помещен проект, представляющий собой типовую заготовку для создания иллюстративных приложений. Его модули предусматривают обработку вызовов команд меню, щелчков мыши и других часто используемых сообщений в предельно сокращенном варианте. Это позволит при описании программ не повторять тексты оконной функции и инициализации окна, а приводить только исходные тексты модулей, существенно отличающихся от тех, которые располагаются в папке Template. В данный проект входит файл ресурсов resource.гс с шаблоном меню из трех пунктов и описанием диалогового окна, активируемого при выполнении команды меню О программе.


⇐ Предыдущая| |Следующая ⇒