[C con Clase] c y unicode

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


perdon, me falto colocar byte* datos en vez de byte datos

El 3 de septiembre de 2010 13:39, Adolfo Cárdenas
<adocardenas en gmail.com>escribió:

> 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;
>
>
//perdon, me falto colocar byte* datos en vez de byte datos

> //   byte datos;
>
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/3f175690/attachment.html>


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