perdon, me falto colocar byte* datos en vez de byte datos<br><br>
<div class="gmail_quote">El 3 de septiembre de 2010 13:39, Adolfo Cárdenas <span dir="ltr"><<a href="mailto:adocardenas@gmail.com">adocardenas@gmail.com</a>></span> escribió:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div>Muchas gracias, está funcionando perfecto.</div>
<div> </div>
<div>(Pongo las funcion de archivo mezclada con las de ventana sólo para mostrar el resumen.):</div>
<div> </div>
<div>#include <windows.h></div>
<div>//-------------------ARCHIVO-------------------</div>
<div>#include <io.h><br>#include <fcntl.h><br>#include <sys\stat.h><br>#include <stdio.h></div>
<div>typedef unsigned char byte;</div>
<div>
<div>//-----------------------------------------------------</div>
<div> </div></div>
<div>
<div>int MostrarArchivoUnicode(HDC hdc, char* archivo, int nbytes) // Muestra nbytes del archivo.</div></div>
<div>{</div>
<div> LOGFONT logfuente;<br> HFONT fuente,fuenteant;<br> </div></blockquote>
<div>//perdon, me falto colocar byte* datos en vez de byte datos</div>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div>// byte datos; </div></blockquote>
<div>byte* datos;</div>
<div> </div>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div>
<div>
<div> datos = new byte[nbytes];</div></div>
<div> </div></div>
<div> //-----------------ARCHIVO---------------------------</div>
<div> int h, bytes;</div>
<div> </div>
<div> if((h = open(archivo, O_RDONLY|O_BINARY)) == -1) return -1;<br> else {<br> lseek(h, 0L, SEEK_SET);</div>
<div>
<div> if((bytes = read(h, datos, nbytes)) == -1) return -2;<br> close(h);<br> }</div></div>
<div> </div>
<div> //------------------------VENTANA----------------------</div>
<div> logfuente.lfStrikeOut = 0;<br> logfuente.lfUnderline = 0;<br> logfuente.lfHeight = 18;<br> logfuente.lfEscapement = 0;<br> logfuente.lfItalic = FALSE;<br> logfuente.lfCharSet=CHINESEBIG5_CHARSET; // Importante</div>
<div> strcpy(logfuente.lfFaceName,"MingLiu"); // Importante</div>
<div> logfuente.lfWeight=1;</div>
<div> </div>
<div> fuente = CreateFontIndirect(&logfuente);</div>
<div> fuenteant=(HFONT)SelectObject(hdc, fuente);</div>
<div> </div>
<div> TextOutW(hdc, 0, 0, (WCHAR*)datos, nbytes);</div>
<div> </div>
<div> SelectObject(hdc, fuenteant);<br> DeleteObject(fuente); </div>
<div> return bytes;</div>
<div>} </div>
<div> </div>
<div>//------------------LLAMADA-----------------------</div>
<div> </div>
<div>MostrarArchivoUnicode(hdc,"unicode.txt",60);</div>
<div> </div>
<div>//---------------------------------------------------------------------</div>
<div> </div>
<div>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.</div>
</blockquote></div><br>