/ / Visual C ++ 6.0-Dialog kann nicht abgerufen werden. Bearbeiten Sie das Steuerelement, um Unicode zu akzeptieren. / EDITTEXT-Ressource kann nicht für Unicode akzeptiert werden - C ++, Windows, Visual-C ++, Unicode

Visual C ++ 6.0-Dialog kann nicht abgerufen werden. Bearbeiten Sie das Steuerelement, um Unicode zu akzeptieren

Ich verwende Visual C ++ 6.0 in Windows 7. Ich gehe zu Datei-> Neu. Ich wähle Win32-Anwendung und nenne sie HelloWorld. "Win32-Anwendungsschritt 1 von 1" wird angezeigt. Ich wähle "Eine typische Hello World-Anwendung". VC erstellt eine einfache Hello World App.

Ich wähle die Datei HelloWorld.cpp. Ich füge in den folgenden Definitionen oben in der HelloWorld.cpp-Datei ein:

#define UNICODE
#define _UNICODE

Ich doppelklicke dann auf HelloWorld.rc. Ich öffne den Punkt "Dialog". Darunter befindet sich IDD_ABOUTBOX. Ich doppelklicke das. Dann füge ich dem Dialogfenster ein EDITTEXT-Steuerelement hinzu. Ich drückte Strg-F5, um das Programm auszuführen.

Ich wähle ungefähr und der Info-Dialog wird angezeigtzusammen mit EDITTEXT-Steuerung. Ich gehe dann zur Charmap.exe-Anwendung und wähle ein japanisches Hiragana-Zeichen aus der Meiryo-Schrift. Ich kopiere es in die Zwischenablage.

Ich füge es dann in das EDITTEXT-Steuerelement ein. Es erscheint als "?" Fragezeichen.

Ich verstehe nicht, was ich tun soll. Wie bekomme ich Dialogfelder, um Unicode zu akzeptieren?

Danke im Voraus, Ryan

Antworten:

0 für die Antwort № 1

Definieren Sie in der Quelldatei nicht UNICODE und _UNICODE. Sie müssen es auf Projektebene definieren. Formularmenü in VS select project und Setting (Alt-7).

Wählen Sie im Dialogfeld die Registerkarte C ++ aus, und wählen Sie aus der Dropdown-Liste Kategorie die Option Vorprozessor aus. Geben Sie im Bearbeitungsfeld unten UNICODE und _UNICODE ein, die durch Komma getrennt sind.

Das Bearbeitungssteuerelement verwendet nun die Systemschriftart, die keinen erweiterten Zeichensatz hat. Sie müssen die Schriftart für die Bearbeitungssteuerung ändern.

Führen Sie im Dialogfeld WM_INITDIALOG-Handler folgende Schritte aus:

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;

Denken Sie daran, dass nicht alle Schriftarten einen erweiterten Zeichensatz haben. Ich denke, es sollte funktionieren, wenn Sie Arial wie im Code-Snippet verwenden.