2009-08-24 10 views
5

Tengo una gran aplicación MFC que estoy ampliando para permitir la entrada multilingüe. Por el momento, debo permitir que el usuario ingrese datos Unicode en cuadros de edición en un solo cuadro de diálogo.Conversión de Piecewise de una aplicación MFC a Unicode/MBCS

¿Hay alguna manera de hacerlo sin activar UNICODE o MBCS para toda la aplicación? Solo necesito una pequeña parte de la aplicación convertida en este momento. ¿Es posible hacer esto por partes, y si es así, cómo?


Aclaración: Podría usar :: GetWindowTextW() para obtener la información Unicode fuera de la ventana. Estoy intentando descubrir cómo permitir que el usuario ingrese texto Unicode en la ventana. Actualmente, los caracteres que el usuario escribe fuera de la página de códigos de windows-1252 aparecen como '?'. ¿Hay alguna manera de arreglar esto?

+1

¿Por qué no puedes simplemente completar Unicode? –

Respuesta

0

Solo una idea: puede intentar activar UNICODE para su compilación y usar las llamadas ANSI donde lo necesite (por ejemplo, CStringA).

(entiendo que esto puede no ser una opción para usted, pero pensamos que vale la pena señalar que se puede hacer frente a este problema al revés) diapositivas

+0

No puedo hacerlo en este caso. Habría decenas de miles de llamadas para cazar y convertir. –

4

Para permitir CEdit para mostrar caracteres Unicode se debe crear con CreateWindowW función. Acabo de probarlo en el programa ANSI MFC.

// allows Unicode characters 
CreateWindowW(L"EDIT", L"", WS_CHILD|WS_VISIBLE, 10, 10, 50, 20, GetSafeHwnd(), 0, 0, 0); 

// shows Unicode characters as ? 
CreateWindow("EDIT", "", WS_CHILD|WS_VISIBLE, 10, 10, 50, 20, GetSafeHwnd(), 0, 0, 0); 

Se puede crear todos los cuadros de edición de forma manual en el cuadro de diálogo OnInitDialog función de. Y luego los subclona a una clase CMyEdit personalizada con soporte Unicode.

2

¿Se puede reemplazar estos cuadros de edición con controles de edición ricos? Luego, puede ingresar caracteres internacionales incluso en una compilación que no sea Unicode; internamente, tendrían codificación rtf, pero luego, cuando transmita el texto desde el control, puede usar el formato SF_UNICODE para obtener la representación Unicode.

Cuestiones relacionadas