[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