中西文溷合输入的实现方法.pdfVIP

  • 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

文档评论(0)

1亿VIP精品文档

相关文档