/ / Nie można przejść do okna dialogowego Visual C ++ 6.0 Edytuj sterowanie, aby zaakceptować Unicode / Nie można uzyskać EDITTEXT Zasób do zaakceptowania Unicode - c ++, Windows, Visual C ++, Unicode

Nie można uzyskać okna dialogowego Visual C ++ 6.0 Edytuj sterowanie, aby zaakceptować Unicode / Nie można uzyskać EDITTEXT Zasób do zaakceptowania Unicode - c ++, Windows, Visual C ++, Unicode

Używam Visual C ++ 6.0 w Windows 7. Idę do File-> New. Wybieram aplikację Win32 i nazywam ją HelloWorld. "Pojawia się Win32 1 stopień 1". Wybieram "Typową aplikację Hello World". VC tworzy prostą aplikację Hello World.

Wybieram plik HelloWorld.cpp. Wklejam następujące definicje u góry pliku HelloWorld.cpp:

#define UNICODE
#define _UNICODE

Następnie dwukrotnie kliknij HelloWorld.rc. Otwieram element "Dialog". Pod nim jest IDD_ABOUTBOX. Podwójnie klikam to. Następnie dodam formant EDITTEXT do okna dialogowego. Naciskam ctrl-F5, aby uruchomić program.

Wybieram około i wyświetlane jest okno dialogowe owraz z kontrolą EDITTEXT. Następnie przechodzę do aplikacji charmap.exe i wybieram japońską czcionkę hiragana z czcionki Meiryo. Kopiuję to do schowka.

Wklejam go do formantu EDITTEXT. Pojawia się jako "?" znak zapytania.

Nie rozumiem, co robić. Jak mogę uzyskać okna dialogowe do edytowania, aby zaakceptować Unicode?

Z góry dziękuję, Ryan

Odpowiedzi:

0 dla odpowiedzi № 1

Nie definiuj UNICODE i _UNICODE w pliku źródłowym. musisz zdefiniować to na poziomie projektu. Menu formularzy w projekcie wyboru VS i ustawieniu (Alt-7).

W oknie dialogowym wybierz kartę C ++ iz pola Kategoria wybierz opcję Preprocessor. W polu edycji poniżej wpisz UNICODE i _UNICODE rozdzielone przecinkami.

Teraz edytuj sterowanie, ponieważ używa czcionki systemowej, która nie ma rozszerzonego zestawu znaków. Musisz zmienić czcionkę dla kontroli edycji.

W oknie dialogowym WM_INITDIALOG wykonaj następujące czynności:

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;

Pamiętaj, że nie wszystkie czcionki mają rozszerzony zestaw znaków. Myślę, że ustawienie go w Arial, jak w kodzie źródłowym, powinno działać.