这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [求助]不能显示汉字……为何?!?!

共4条 1/1 1 跳转至

[求助]不能显示汉字……为何?!?!

菜鸟
2005-12-24 02:23:18     打赏

环境:T2.0+wml2.0.
问题:写了一个显示汉字的程序,但编译时系统提示initialization to `short unsigned int *' from `char *'

代码:

UGL_FONT_DRIVER_ID fontDrvId;
UGL_FONT_DEF fontDef;
UGL_FONT_ID fontBanner;
UGL_DEVICE_ID devId;
UGL_GC_ID gc;


if (uglInitialize() == UGL_STATUS_ERROR)
return;
uglDriverFind(UGL_DISPLAY_TYPE,0,(UGL_UINT32*)&devId);
uglDriverFind(UGL_FONT_ENGINE_TYPE, 0, (UGL_UINT32*)&fontDrvId);

gc = uglGcCreate(devId);

if(uglFontFindString(fontDrvId, "familyName=Song", &fontDef) == UGL_STATUS_ERROR)
printf("\nBanner's uglFontFindString failed.\n");

if ((fontBanner = uglFontCreate(fontDrvId, &fontDef)) == UGL_NULL)
{
printf("Font not found. Exiting.\n");
exit (1);
}


UGL_WCHAR *text = "山雨欲来风满楼\0";

uglColorAlloc (devId, &colorTable[BLACK].rgbColor, UGL_NULL,
&colorTable[BLACK].uglColor, 1);
uglColorAlloc(devId, &colorTable[BLUE].rgbColor, UGL_NULL,
&colorTable[BLUE].uglColor, 1);
uglColorAlloc(devId, &colorTable[YELLOW].rgbColor, UGL_NULL,
&colorTable[YELLOW].uglColor, 1);
uglColorAlloc(devId, &colorTable[WHITE].rgbColor, UGL_NULL,
&colorTable[WHITE].uglColor, 1);

uglBatchStart(gc);
uglBackgroundColorSet(gc, colorTable [YELLOW].uglColor);
uglForegroundColorSet(gc, colorTable [BLUE].uglColor);
uglLine(gc, 200,0,200,200);
uglRectangle(gc,50,50,149,79);
uglBatchEnd(gc);

uglFontSet(gc, fontBanner);
uglBatchStart(gc);
uglTextDrawW(gc, 350, 350, -1, text);
uglBatchEnd(gc);
printf("after textdraw!\n");
return;

请大侠们帮我看看,怎么修改呢?




关键词: 求助     不能     显示     汉字     为何     colorTable    

菜鸟
2005-12-24 03:06:00     打赏
2楼

UGL_WCHAR *text = "山雨欲来风满楼\0";
改为

CHAR *text = "山雨欲来风满楼\000";试试看。

要自己多调试调试看啊!


菜鸟
2005-12-24 03:48:00     打赏
3楼

华山大侠,我试过了,这次的错误是:passing `char *' as argument 5 of `uglTextDrawW(ugl_gc *, i
nt, int, int, const short unsigned int *)'

我想是不是因为识别不了我写的汉字啊?

如果我用short unsigned a[]={0xA1F2,0xD5C8,0x00};则没有任何问题,但如果总是这样使用汉字显示的话效率太低了……


菜鸟
2005-12-26 07:27:00     打赏
4楼

问题解决了!

我仔细看了看,编译时系统的提示错误是由变量的类型不匹配引起的,

initialization to `short unsigned int *' from `char *'

我将函数中的text进行了一次强制类型转换久OK了!

char *text = "山雨欲来风满楼\00";
uglTextDrawW(gc, 350, 350, -1, (const short unsigned int*)text);

[align=right][color=#000066][此贴子已经被作者于2005-12-25 23:27:55编辑过][/color][/align]

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]