[C con Clase] c y unicode

Steven Davidson srd4121 en njit.edu
Jue Sep 2 05:34:04 CEST 2010


Hola Adolfo,

On 9/1/2010 6:52 PM, Adolfo Cárdenas wrote:
>
>
> El 1 de septiembre de 2010 17:41, Adolfo Cárdenas <adocardenas en gmail.com
> <mailto:adocardenas en gmail.com>> escribió:
>
>     Gracias
>     Si me funciono con el TextOutW(hdc, x,y, (WCHAR*)(lineas[i]), 30);
>
> El TextOutW muestra WCHAR* , es su tipo de datos a mostrrar, según
> pienso, ¿me equivoco?

Sí. El prototipo es:

BOOL TextOutW(
   HDC hdc,
   int x,
   int y,
   WCHAR *pCadena,
   int cbCadena
);

> creo que no es necesario otro tipo de transformación, no sería como
> tratar de mostrar una cadena de caracteres.Por eso creo que si está
> en su funcionamiento normal, corrijanme.
>

Depende del tipo de la cadena que creaste. Si originalmente la cadena 
'lineas' es un array de 'char', entonces posiblemente tengas problemas, 
al menos que hayas tenido en cuenta el cambio de tipo a 'WCHAR' al usar 
este array.

> pero no muestra caracteres chinos, supongo que hay que seleccionar la
> fuente ¿Cómo se selecciona la mingliu? u otra que alguien conozca?
>

Para esto, "crea" una fuente para usarse. Por ejemplo,


HFONT hf = CreateFont(
                 -MulDiv(14, GetDeviceCaps(hdc, LOGPIXELSY), 72),0,
                 0,0,
                 FW_NORMAL, FALSE, FALSE, FALSE,
                 CHINESEBIG5_CHARSET, OUT_TT_PRECIS,
                 CLIP_DEFAULT_PRECIS, PROOF_QUALITY,
                 DEFAULT_PITCH | FF_DONTCARE, TEXT("MingLiu") );
HFONT hfPrev = (HFONT) SelectObject( hdc, hf );

TCHAR szMensaje[] = TEXT( "\x81a1" );
int n = sizeof szMensaje / sizeof szMensaje[0];
TextOut( hdc, 50,110, szMensaje, n-1 );

DeleteObject( SelectObject( hdc, hfPrev ) );

Me sale en pantalla el siguiente carácter chino: 膡

Sugiero que leas el capítulo 24 del curso del API de MS-Windows, para el 
tema de las fuentes. El enlace es: 
http://winapi.conclase.net/curso/index.php?cap=024#inicio


Espero que todo esto te sirva.

Steven





Más información sobre la lista de distribución Cconclase