Для объявления символов и строк в данном проекте будут использоваться типы данных, предусматривающих 16-битную кодировку символов. Например, объявление массива из двадцати 16-битных слов, в который заносится строка, заканчивающаяся нулевым словом, будет выглядеть следующим образом:

wchar_t szStr[20]-L"CTpoKa UNICODE":

Буква L перед кавычками указывает на кодировку UNICODE. Вместо типа данных wchar_t можно использовать макросы TCHAR и _Т( "<строка символов>"), использующие условную трансляцию для выбора способа кодировки.

В проекте потребуется применять библиотеки функций, позволяющих работать с новыми типами данных. В частности, необходимы аналоги функций С++, работающих со строками ANSI: strcpy (), strcat(), strl en() и пр. Запомнить имена новых функций легко. Надо символы str заменить на wcs. Например, получить

Ввод иероглифов длину строки szStr в символах можно при помощи функции wcslen(szStr). Если последовательно придерживаться стандарта UNICODE, то применять функции преобразования данных из одной кодировки в другую не потребуется.

Код процедуры регистрации оконного класса и создания окна в проекте UNICODE приведен в листинге 9.1.

Листинг 9.1

#define UNICODE
#define JJNICODE
#include <windows.h>
#include "resource.h"
#include "Main.h"
int InitApp(HINSTANCE KodPril)
{
static WNDCLASSEX wc; wcharj:* Name - L"Template"; wc.cbSize - sizeof(WNDCLASSEX);
wc.hlnstance - GetModuleHandle(NULL); wc.hCursor - LoadCursor( NULL. IDC_ARR0W );
wc.hlcon -LoadlconCKodPril. L"IDI_IC0N1");
wc.hlconSm -LoadlconCKodPril. L"IDI_ICON0");
wc.lpszMenuName - MAKEINTRES0URCE(IDR_MENU1); wc.lpszClassName - Name;
wc.hbrBackground - (HBRUSH) (C0L0R_WIND0W + 1);
wc.style - CS_VREDRAW | CSJREDRAW;
wc.lpfnWndProc - InputWndProc;
if (! RegisterClassEx(&wc)) return FALSE;

HWND hWnd - CreateWindowCName. L"Bboa иероглифов".

WSJISIBLE I WS_OVERLAPPEDWINDOW.200.
200.500 .300.NULL.NULL.KodPri1.NULL);

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