Pregunta

Estoy creando una aplicación MFC C ++ con " Usar juego de caracteres Unicode " seleccionado en Visual Studio. Tengo UNICODE definido, mis CStrings son de 16 bits, manejo nombres de archivo con caracteres japoneses, etc. Pero, cuando pongo cadenas Unicode que contienen caracteres japoneses en un CComboBox (usando AddString), aparecen como ????? .

Estoy ejecutando Windows XP Professional x64 (en inglés). Si uso el Panel de control de Windows Opciones regionales y de idioma, la pestaña Avanzado y configuro el idioma para los programas que no son Unicode en japonés, mi cuadro combinado se ve bien.

Entonces, quiero que mi cuadro combinado se vea bien y quiero entender por qué el "Idioma para programas que no son Unicode" la configuración está cambiando el comportamiento de mi programa Unicode. ¿Hay algo más que deba hacer para decirle a Windows que mi aplicación es una aplicación Unicode?

¡Gracias por cualquier ayuda!

¿Fue útil?

Solución

Windows conoce la diferencia entre los programas Unicode y no Unicode por las funciones que llaman. La mayoría de las funciones de la API de Windows vendrán en dos variantes, una que termina en A para no Unicode y otra que termina en W para Unicode. Los archivos de inclusión que definen estas funciones utilizarán la configuración del compilador para elegir uno u otro automáticamente.

Es posible que los caracteres no salgan correctamente porque seleccionó una fuente que no los incluye como fuente de IU predeterminada.

Otros consejos

¿De dónde sacas las cuerdas? Si están codificados en sus fuentes C, entonces, al momento de llamar a AddString, es muy probable que ya estén dañados.

Nada impide que uno tome una cadena Unicode, " exprima " en un std :: string, por ejemplo, y dañalo. Incluso si las aplicaciones se compilan como Unicode.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top