- 11
- 0
- 约8.32千字
- 约 5页
- 2018-04-17 发布于河南
- 举报
中西文溷合输入的实现方法
风与水的天堂
WINDML 中英文混合输出的实现方法
昨天去购书中心,看到过一本书(书名为:VxWorks 驱动及分布式编程),在翻阅该书时,
发现了WINDML 中英文混合输出的部分,基本思想是在处理中英字符串时,对西文进行扩
展,通过在西文字符编码前增加00 实现的,代码有两页。
在整理的过程中,发现书中代码个别地方有错误,已修正。
效果附图(在文件结尾处)
打开ugl\2d\uglfont1.c
添加myHzStrInit() 函数
修改uglTextDrawW() 函数
修改uglTextSizeGetW() 函数
在实际的使用中,定义要显示的字符串时,如果采用如下形式时,
char * text = 中国;
uglTextSizeGetW(fontSystem, UGL_NULL, tmp, -1, text );
uglTextDrawW(gc, 0, y, -1, text );
在编译时会出现警告:
warning: passing arg 5 of `uglTextDrawW from incompatible
解决的方法有两种:
1、定义要显示的字符串时直接定义为16 位的:
a) 采用UGL_WCHAR * text = 中国;
b) 采用UINT16 * text = 中国;
2 、定义时仍定义为char 类型,但在使用这些函数时,进行类型的强制转换,如下:
char * text = 中国;
uglTextSizeGetW(fontSystem, UGL_NULL, tmp, -1, (UGL_WCHAR *)text );
uglTextDrawW(gc, 0, y, -1, (UGL_WCHAR *)text );
两种方式比较而言,个人感觉还是第一种方式比较方便。
但看了wwm 的源码后,发现wwm 的源码采用的是第二种方式,即在使用时,进行类型强
制转换。
Much 2008-8-17 11:37:14
风与水的天堂
风与水的天堂
uglTextDrawW()函数的修改
UGL_STATUS uglTextDrawW
(
UGL_GC_ID gc, /* graphics context */
UGL_POS x, /* left position of the text */
UGL_POS y, /* top position of the text */
UGL_SIZE length, /* number of characters in text */
const UGL_WCHAR *text /* double-byte text array */
)
{
UGL_STATUS status;
/*start added by much 2008-8-17 9:57:44*/
UCHAR *strTemp;
int leng;
leng = (int)strlen((const char *)text) + 1;
if ((str
您可能关注的文档
最近下载
- (2026年)实施指南《GBT13265.1-1997纤维光学隔离器第1部分总规范》.pptx VIP
- 2026-2030中国沉香木行业市场深度调研及发展趋势与投资前景研究报告.docx
- 东北证券-博源化工-000683-稀缺天然碱领军企业阿碱项目稳步扩产.pdf VIP
- JB_T 8531-2013阀门手动装置 技术条件.pdf
- 武术套路单项比赛所需物品明细单.docx VIP
- 部编版小学语文教师:统编版语文1-6年级语文要素梳理.pdf VIP
- 2026年江苏城市职业学院单招职业技能考试必刷测试卷附答案.docx VIP
- 船上见习记录簿(样式).pdf
- (2026春新版)三年级下册道德与法治全册教案.docx
- (2025年)广东省公务员招录面试真题及答案.docx
原创力文档

文档评论(0)