[C con Clase] c y unicode

Adolfo Cárdenas adocardenas en gmail.com
Vie Sep 3 20:39:15 CEST 2010


Muchas gracias, está funcionando perfecto.

(Pongo las funcion de archivo mezclada con las de ventana sólo para mostrar
el resumen.):

#include <windows.h>
//-------------------ARCHIVO-------------------
#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <stdio.h>
typedef unsigned char byte;
 //-----------------------------------------------------

 int MostrarArchivoUnicode(HDC hdc, char* archivo, int nbytes)
// Muestra nbytes del archivo.
{
   LOGFONT logfuente;
   HFONT fuente,fuenteant;

   byte datos;
   datos = new byte[nbytes];

   //-----------------ARCHIVO---------------------------
   int h, bytes;

   if((h = open(archivo, O_RDONLY|O_BINARY)) == -1) return -1;
   else   {
      lseek(h, 0L, SEEK_SET);
       if((bytes = read(h, datos, nbytes)) == -1) return -2;
      close(h);
    }

   //------------------------VENTANA----------------------
   logfuente.lfStrikeOut = 0;
   logfuente.lfUnderline = 0;
   logfuente.lfHeight = 18;
   logfuente.lfEscapement = 0;
   logfuente.lfItalic = FALSE;
   logfuente.lfCharSet=CHINESEBIG5_CHARSET;        //  Importante
   strcpy(logfuente.lfFaceName,"MingLiu");                  //  Importante
   logfuente.lfWeight=1;

   fuente = CreateFontIndirect(&logfuente);
   fuenteant=(HFONT)SelectObject(hdc, fuente);

   TextOutW(hdc, 0, 0, (WCHAR*)datos, nbytes);

   SelectObject(hdc, fuenteant);
   DeleteObject(fuente);
   return bytes;
}

//------------------LLAMADA-----------------------

MostrarArchivoUnicode(hdc,"unicode.txt",60);

//---------------------------------------------------------------------

Los archivos unicode aveces tienen caracteres de varios idiomas. Pienso que
debo leer los bytes y variar el lfCharSet y el lfFaceName de acuerdo al
rango del valor de los bytes y seleccionar la fuente cada vez que los
bytes tengan un rango diferente. ¿Hay otra forma?Gracias.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100903/bc875f7a/attachment.html>


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