/ / Can't Get Visual C ++ 6.0 Диалогов прозорец Редактиране на контрол за приемане на Unicode / Не може да получи EDITTEXT ресурс за приемане на Unicode - c ++, windows, visual-c ++, unicode

Диалоговият прозорец за редактиране на Visual C ++ 6.0 не може да се контролира за приемане на Unicode / не може да се получи ресурс EDITTEXT за приемане на Unicode - c ++, windows, visual-c ++, unicode

Използвам Visual C ++ 6.0 в Windows 7. Отивам до File-> New. Избирам Win32 приложението и го наричам HelloWorld. "Win32 Appliction Стъпка 1 от 1" се появява. Избирам "Типично Hello World Application". VC създава прост Hello World App.

Избирам файла HelloWorld.cpp. Поставям следните дефиниции в горната част на файла HelloWorld.cpp:

#define UNICODE
#define _UNICODE

След това щракнете двукратно върху HelloWorld.rc. Отворя елемент "Диалог". Под него е IDD_ABOUTBOX. Щракнете два пъти върху това. След това добавям контрол EDITTEXT към диалоговия прозорец. Натиснах ctrl-F5, за да стартирам програмата.

Избирам за и се показва диалоговият прозорец aboutзаедно с EDITTEXT контрол. След това отидох до приложението charmap.exe и избрах японски хираганов символ от шрифта Meiryo. Аз го копирам в клипборда.

След това го поставям в контрола EDITTEXT. Тя се показва като "?" въпросителен знак.

Не разбирам какво да правя. Как мога да получа диалогови полета за редактиране, за да приема Unicode?

Благодаря предварително, Райън

Отговори:

0 за отговор № 1

Не дефинирайте UNICODE и _UNICODE в изходния файл. трябва да го определите на ниво проект. Меню Форм в VS изберете проект и Настройка (Alt-7).

В диалоговия прозорец изберете раздела C ++ и от падащото поле Category изберете Preprocessor. В полето за редактиране по-долу въведете UNICODE и _UNICODE, разделени с кома.

Сега редактирайте контрола, тъй като използва системния шрифт, който няма разширен набор от символи. Трябва да промените шрифта за контрол на редактирането.

В диалоговия манипулатор WM_INITDIALOG направете следното:

case WM_INITDIALOG:
{
LOGFONT lf;
::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf);
HWND hEdit = GetDlgItem(hDlg, IDC_EDIT1);
HDC hDC = GetDC(hEdit);

_tcscpy(lf.lfFaceName, _T("Arial"));
lf.lfHeight = -MulDiv(10, GetDeviceCaps(hDC, LOGPIXELSY), 72);

//This creates the new font for the edit control
HFONT hFont = CreateFontIndirect(&lf);

//This sets the new font for the edit control
SendMessage(hEdit, WM_SETFONT, (WPARAM)hFont, FALSE);
}
return TRUE;

Не забравяйте, че не всички видове шрифтове имат разширен набор от символи. Мисля, че задаването му на Arial, както в кодовия фрагмент, трябва да работи.