硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7708|回复: 4
收起左侧

[emWin] 关于汉字的显示

[复制链接]

5

主题

36

回帖

5

积分

新手上路

积分
5
发表于 2013-12-27 16:32:09 | 显示全部楼层 |阅读模式
根据论坛帖子和ERIC的教程,采用FontCvt.exe取模工具生成中文字,但是一直无法正常显示。不知道原因再哪?
下面代码是从ERIC的教程抠出来的,放到我程序,按钮和TEXT都无法显示中文字,求救~~~跑的是裸机,是不是还有其他地方要设置的?

GUI_CONST_STORAGE unsigned char acGUI_FontSongFont16_5B50[ 32] = { /* code 5B50 */
  ________,________,
  __XXXXXX,XXXX____,
  ________,__X_____,
  ________,_X______,
  ________,X_______,
  _______X,________,
  _______X,________,
  _______X,_____X__,
  XXXXXXXX,XXXXXXX_,
  _______X,________,
  _______X,________,
  _______X,________,
  _______X,________,
  _______X,________,
  _____X_X,________,
  ______X_,________};

GUI_CONST_STORAGE unsigned char acGUI_FontSongFont16_5B89[ 32] = { /* code 5B89 */
  ______X_,________,
  _______X,________,
  __XXXXXX,XXXXXXX_,
  __X_____,_____X__,
  _X___X__,____X___,
  _____XX_,________,
  _____X__,________,
  XXXXXXXX,XXXXXXX_,
  ____X___,__X_____,
  ____X___,__X_____,
  ____X___,_X______,
  _____XX_,X_______,
  _______X,________,
  _____XX_,XX______,
  ___XX___,__XXX___,
  XXX_____,___X____};

GUI_CONST_STORAGE unsigned char acGUI_FontSongFont16_7535[ 32] = { /* code 7535 */
  _______X,________,
  _______X,________,
  _______X,________,
  __XXXXXX,XXXXX___,
  __X____X,____X___,
  __X____X,____X___,
  __XXXXXX,XXXXX___,
  __X____X,____X___,
  __X____X,____X___,
  __X____X,____X___,
  __XXXXXX,XXXXX___,
  __X____X,____X___,
  _______X,______X_,
  _______X,______X_,
  ________,XXXXXXX_,
  ________,________};

GUI_CONST_STORAGE unsigned char acGUI_FontSongFont16_798F[ 32] = { /* code 798F */
  __X_____,________,
  ___X__XX,XXXXXXX_,
  ___X____,________,
  XXXXXX_X,XXXXXX__,
  _____X_X,_____X__,
  ____X__X,_____X__,
  ___X___X,XXXXXX__,
  __XX____,________,
  _X_XX_XX,XXXXXXX_,
  X__X_XX_,__X___X_,
  ___X__X_,__X___X_,
  ___X__XX,XXXXXXX_,
  ___X__X_,__X___X_,
  ___X__X_,__X___X_,
  ___X__XX,XXXXXXX_,
  ___X__X_,______X_};

GUI_CONST_STORAGE unsigned char acGUI_FontSongFont16_83B1[ 32] = { /* code 83B1 */
  _____X__,__X_____,
  _____X__,__X_____,
  _XXXXXXX,XXXXXXX_,
  _____X__,__X_____,
  _____X_X,__X_____,
  __XXXXXX,XXXXXX__,
  ___X___X,___X____,
  ____X__X,___X____,
  ____X__X,__X_____,
  XXXXXXXX,XXXXXXX_,
  _____X_X,_X______,
  ____X__X,__X_____,
  ___X___X,___XX___,
  __X____X,____XXX_,
  _X_____X,_____X__,
  _______X,________};

GUI_CONST_STORAGE GUI_CHARINFO GUI_FontSongFont16_CharInfo[5] = {
   {  16,  16,  2, acGUI_FontSongFont16_5B50 } /* code 5B50 */
  ,{  16,  16,  2, acGUI_FontSongFont16_5B89 } /* code 5B89 */
  ,{  16,  16,  2, acGUI_FontSongFont16_7535 } /* code 7535 */
  ,{  16,  16,  2, acGUI_FontSongFont16_798F } /* code 798F */
  ,{  16,  16,  2, acGUI_FontSongFont16_83B1 } /* code 83B1 */
};

GUI_CONST_STORAGE GUI_FONT_PROP GUI_FontSongFont16_Prop5 = {
   0x83B1 /* first character */
  ,0x83B1 /* last character  */
  ,&GUI_FontSongFont16_CharInfo[  4] /* address of first character */
  ,(GUI_CONST_STORAGE GUI_FONT_PROP *)0 /* pointer to next GUI_FONT_PROP */
};

GUI_CONST_STORAGE GUI_FONT_PROP GUI_FontSongFont16_Prop4 = {
   0x798F /* first character */
  ,0x798F /* last character  */
  ,&GUI_FontSongFont16_CharInfo[  3] /* address of first character */
  ,&GUI_FontSongFont16_Prop5 /* pointer to next GUI_FONT_PROP */
};

GUI_CONST_STORAGE GUI_FONT_PROP GUI_FontSongFont16_Prop3 = {
   0x7535 /* first character */
  ,0x7535 /* last character  */
  ,&GUI_FontSongFont16_CharInfo[  2] /* address of first character */
  ,&GUI_FontSongFont16_Prop4 /* pointer to next GUI_FONT_PROP */
};

GUI_CONST_STORAGE GUI_FONT_PROP GUI_FontSongFont16_Prop2 = {
   0x5B89 /* first character */
  ,0x5B89 /* last character  */
  ,&GUI_FontSongFont16_CharInfo[  1] /* address of first character */
  ,&GUI_FontSongFont16_Prop3 /* pointer to next GUI_FONT_PROP */
};

GUI_CONST_STORAGE GUI_FONT_PROP GUI_FontSongFont16_Prop1 = {
   0x5B50 /* first character */
  ,0x5B50 /* last character  */
  ,&GUI_FontSongFont16_CharInfo[  0] /* address of first character */
  ,&GUI_FontSongFont16_Prop2 /* pointer to next GUI_FONT_PROP */
};

GUI_CONST_STORAGE GUI_FONT GUI_FontSongFont16 = {
   GUI_FONTTYPE_PROP /* type of font    */
  ,16 /* height of font  */
  ,16 /* space of font y */
  ,1 /* magnification x */
  ,1 /* magnification y */
  ,{&GUI_FontSongFont16_Prop1}
  ,14 /* Baseline */
  ,7 /* Height of lowercase characters */
  ,11 /* Height of capital characters */
};

//*********************************************
//3õê¼»ˉoˉêy
//*********************************************
void InitDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;
    //
    //GUI_ID_BUTTON0
    //
    GUI_UC_SetEncodeUTF8();
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),&GUI_FontSongFont16);
    //
    //GUI_ID_TEXT0
    //
    TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT0), GUI_RED);
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&GUI_FontSongFont16);
//     GUI_UC_SetEncodeNone();
}

void PaintDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;
}
//*************************************************************
//»Øμ÷oˉêy
//*************************************************************
static void _cbCallback(WM_MESSAGE * pMsg)
{
    int NCode, Id;
    WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId)
    {
        case WM_PAINT:
            PaintDialog(pMsg);
            break;
        case WM_INIT_DIALOG:
            InitDialog(pMsg);
            break;
        case WM_KEY:
            switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
            {
                case GUI_KEY_ESCAPE:
                    GUI_EndDialog(hWin, 1);
                    break;
                case GUI_KEY_ENTER:
                    GUI_EndDialog(hWin, 0);
                    break;
            }
            break;
        case WM_NOTIFY_PARENT:
            Id = WM_GetId(pMsg->hWinSrc);
            NCode = pMsg->Data.v;        
            switch (Id)
            {
                case GUI_ID_OK:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                        GUI_EndDialog(hWin, 0);
                    break;
                case GUI_ID_CANCEL:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                        GUI_EndDialog(hWin, 0);
                    break;

            }
            break;
        default:
            WM_DefaultProc(pMsg);
    }
}
//*************************************************************
//Ö′DDoˉêy
//*************************************************************
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
    { FRAMEWIN_CreateIndirect,  "armfly",            0,                       0,  100,  480,172,FRAMEWIN_CF_MOVEABLE,0},
    { BUTTON_CreateIndirect,    "°2¸£à3μç×ó",        GUI_ID_BUTTON0,          0,0,200,50,0,0},
    { TEXT_CreateIndirect,      "°2",        GUI_ID_TEXT0,            0, 0, 200, 33, 0,0},
};
void d_iconview_test(void)
{
   
    //button = BUTTON_CreateEx(0, 100, 80, 90, WM_HBKWIN, WM_CF_SHOW, 0, 0x88);
    //BUTTON_SetText(button, "à3");
    //GUI_UC_SetEncodeUTF8();
    //BUTTON_SetFont(button,&GUI_FontSongFont16);
    GUI_Init();
    WM_SetDesktopColor(GUI_WHITE);       /* Automacally update desktop window */
    WM_SetCreateFlags(WM_CF_MEMDEV);     /* Use memory devices on all windows to avoid flicker */
    PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
    FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
    PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
    BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
    //CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
    DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
    SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
    SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
    HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
    //RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
    GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbCallback, 0, 0, 0);

    //ICONVIEW_SetFont(hWin, &GUI_FontSongFont16);
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107491
QQ
发表于 2013-12-27 16:39:17 | 显示全部楼层
放在下面这些函数的文件要属性要改成UTF-8,用记事本改就行。那个生成字库的文件不用改。
  1. //*********************************************
  2. //3õê¼»ˉoˉêy
  3. //*********************************************
  4. void InitDialog(WM_MESSAGE * pMsg)
  5. {
  6.     WM_HWIN hWin = pMsg->hWin;
  7.     //
  8.     //GUI_ID_BUTTON0
  9.     //
  10.     GUI_UC_SetEncodeUTF8();
  11.     BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),&GUI_FontSongFont16);
  12.     //
  13.     //GUI_ID_TEXT0
  14.     //
  15.     TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT0), GUI_RED);
  16.     TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&GUI_FontSongFont16);
  17. //     GUI_UC_SetEncodeNone();
  18. }
  19. void PaintDialog(WM_MESSAGE * pMsg)
  20. {
  21.     WM_HWIN hWin = pMsg->hWin;
  22. }
  23. //*************************************************************
  24. //»Øμ÷oˉêy
  25. //*************************************************************
  26. static void _cbCallback(WM_MESSAGE * pMsg)
  27. {
  28.     int NCode, Id;
  29.     WM_HWIN hWin = pMsg->hWin;
  30.     switch (pMsg->MsgId)
  31.     {
  32.         case WM_PAINT:
  33.             PaintDialog(pMsg);
  34.             break;
  35.         case WM_INIT_DIALOG:
  36.             InitDialog(pMsg);
  37.             break;
  38.         case WM_KEY:
  39.             switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
  40.             {
  41.                 case GUI_KEY_ESCAPE:
  42.                     GUI_EndDialog(hWin, 1);
  43.                     break;
  44.                 case GUI_KEY_ENTER:
  45.                     GUI_EndDialog(hWin, 0);
  46.                     break;
  47.             }
  48.             break;
  49.         case WM_NOTIFY_PARENT:
  50.             Id = WM_GetId(pMsg->hWinSrc);
  51.             NCode = pMsg->Data.v;        
  52.             switch (Id)
  53.             {
  54.                 case GUI_ID_OK:
  55.                     if(NCode==WM_NOTIFICATION_RELEASED)
  56.                         GUI_EndDialog(hWin, 0);
  57.                     break;
  58.                 case GUI_ID_CANCEL:
  59.                     if(NCode==WM_NOTIFICATION_RELEASED)
  60.                         GUI_EndDialog(hWin, 0);
  61.                     break;
  62.             }
  63.             break;
  64.         default:
  65.             WM_DefaultProc(pMsg);
  66.     }
  67. }
  68. //*************************************************************
  69. //Ö′DDoˉêy
  70. //*************************************************************
  71. static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  72.     { FRAMEWIN_CreateIndirect,  "armfly",            0,                       0,  100,  480,172,FRAMEWIN_CF_MOVEABLE,0},
  73.     { BUTTON_CreateIndirect,    "°2¸£à3μç×ó",        GUI_ID_BUTTON0,          0,0,200,50,0,0},
  74.     { TEXT_CreateIndirect,      "°2",        GUI_ID_TEXT0,            0, 0, 200, 33, 0,0},
  75. };
  76. void d_iconview_test(void)
  77. {
  78.    
  79.     //button = BUTTON_CreateEx(0, 100, 80, 90, WM_HBKWIN, WM_CF_SHOW, 0, 0x88);
  80.     //BUTTON_SetText(button, "à3");
  81.     //GUI_UC_SetEncodeUTF8();
  82.     //BUTTON_SetFont(button,&GUI_FontSongFont16);
  83.     GUI_Init();
  84.     WM_SetDesktopColor(GUI_WHITE);       /* Automacally update desktop window */
  85.     WM_SetCreateFlags(WM_CF_MEMDEV);     /* Use memory devices on all windows to avoid flicker */
  86.     PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
  87.     FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
  88.     PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
  89.     BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
  90.     //CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
  91.     DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
  92.     SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
  93.     SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
  94.     HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
  95.     //RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
  96.     GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbCallback, 0, 0, 0);
  97.     //ICONVIEW_SetFont(hWin, &GUI_FontSongFont16);
复制代码
回复

使用道具 举报

1

主题

68

回帖

1

积分

初级会员

积分
1
发表于 2014-3-11 19:34:28 | 显示全部楼层

回 eric2013 的帖子

eric2013:放在下面这些函数的文件要属性要改成UTF-8,用记事本改就行。那个生成字库的文件不用改。
//*********************************************
//3õê¼»ˉoˉêy
//*********************************************
void InitDialog(WM_MESSAGE * pMsg)
....... (2013-12-27 16:39) 
大神,我将你说的menuStart.c改为了utf-8,但是在模拟器里面还是不能显示汉字,为何呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107491
QQ
发表于 2014-3-11 21:09:25 | 显示全部楼层

回 走走看2014 的帖子

走走看2014:大神,我将你说的menuStart.c改为了utf-8,但是在模拟器里面还是不能显示汉字,为何呢? (2014-03-11 19:34) 
现在还不支持在模拟器中显示
回复

使用道具 举报

1

主题

68

回帖

1

积分

初级会员

积分
1
发表于 2014-3-11 21:30:46 | 显示全部楼层

回 eric2013 的帖子

eric2013:现在还不支持在模拟器中显示 (2014-03-11 21:09) 
大神,谢谢你啊,厉害!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-4 09:32 , Processed in 0.253856 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表