/ / No se puede obtener el control de edición de cuadros de diálogo de Visual C ++ 6.0 para aceptar Unicode / No se puede obtener el recurso EDITTEXT para aceptar Unicode - c ++, windows, visual-c ++, unicode

No se puede obtener el control de edición de diálogo Visual C ++ 6.0 para aceptar Unicode / No se puede obtener el recurso EDITTEXT para aceptar Unicode - c ++, windows, visual-c ++, unicode

Estoy usando Visual C ++ 6.0 en Windows 7. Voy a Archivo-> Nuevo. Elijo la aplicación Win32 y la llamo HelloWorld. Aparece "Win32 Appliction Step 1 of 1". Elijo "Una aplicación típica de Hello World". VC crea una sencilla aplicación Hello World.

Selecciono el archivo HelloWorld.cpp. Pego las siguientes definiciones en la parte superior del archivo HelloWorld.cpp:

#define UNICODE
#define _UNICODE

Luego hago doble clic en HelloWorld.rc. Abro el elemento "Diálogo". Debajo está IDD_ABOUTBOX. Hago doble clic en eso. Luego agrego un control EDITTEXT a la ventana de diálogo. Golpeé ctrl-F5 para ejecutar el programa.

Elijo sobre y se muestra el cuadro de diálogo sobrejunto con el control EDITTEXT. Luego voy a la aplicación charmap.exe y selecciono un carácter hiragana japonés de la fuente Meiryo. Lo copio al portapapeles.

Luego lo pego en el control EDITTEXT. Aparece como un "?" signo de interrogación.

No entiendo qué hacer. ¿Cómo puedo obtener cuadros de edición de diálogo para aceptar Unicode?

Gracias por adelantado, Ryan

Respuestas

0 para la respuesta № 1

No defina UNICODE y _UNICODE en el archivo fuente. tienes que definirlo a nivel de proyecto. Menú de formulario en VS seleccionar proyecto y configuración (Alt-7).

En el cuadro de diálogo, seleccione la pestaña C ++ y, en el cuadro desplegable Categoría, seleccione Preprocesador. En el cuadro de edición a continuación, ingrese UNICODE y _UNICODE delimitado por coma.

Ahora, edite el control, ya que utiliza la fuente del sistema que no tiene un conjunto de caracteres extendido. Tienes que cambiar la fuente para el control de edición.

En el cuadro de diálogo Controlador WM_INITDIALOG, haga lo siguiente:

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;

Recuerde que no todos los tipos de fuente tienen un conjunto de caracteres extendido. Creo que configurarlo en Arial como en el fragmento de código debería funcionar.