首先感谢ahbbshenfeng,从他的程序里我实现了WINML2(+CP2)和ZINC6.0的中英文混合显示,我把他的东西再结合我的开发过程给大家做一下介绍,希望大家都少走点弯路,本来就是些软件应用的问题也没有什么机密可言,希望大家也能够多多把自己的东西共享一下!经过实践发现在WINDML3.0里也可以用该方法实现汉字显示!
按理说ahbbshenfeng提供的udbmffnt.c已经实现了不包含UNICODE的中英文混合显示,但是我的WINML2和ZINC6.0都加入了UNICODE的支持。所以我的WINML2下可以实现中英文混合显示,就是采用uglTextDraw(gc, leftText, topText, -1, fillLine)时WINML2下可以实现中英文混合显示,但是加入了UNICODE的支持ZINC6.0就不可以,经过查阅发现加入了UNICODE的支持就用的是
uglTextDrawW(gc, leftText, topText, -1, (const UGL_WCHAR *)fillLineW)来显示字体!
在最关键的程序udbmffnt.c里实现了单字节的中英文字符判断但是没有加双字节的函数。经过考虑我把uglBMFTextDraw和uglBMFTextSizeGet里ahbbshenfeng提供的修改的东西原封不动的拷贝到uglBMFTextSizeGetW和uglBMFTextDrawW里,就可以了!大家可以把ahbbshenfeng提供的ahbbshenfeng提供的udbmffnt.c和自己安装生成的udbmffnt.c比较看看就知道ahbbshenfeng修改了哪里!
就是说ahbbshenfeng提供的udbmffnt.c的已经很完整了就差在双字节的函数里加判断了!自己加就可以了很简单!从程序里面看只要汉字后面有不同的符号就可以判断是12点阵,16点阵,24点阵的字体!
例如:“我~”是12点阵!“我^”是24点阵!不加后缀是16点阵。
这样的话在程序里就可以自由实现字体的变换很是方便!
汉化原码在这里下:
http://www.cevx.com/bbs/dispbbs.asp?BoardID=6&ID=7677&replyID=&skin=1
转自Tony嵌入式 http://Cevx.Com http://Cevx.Net
本人是原作者!