硬汉嵌入式论坛

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

[emWin] vs2010 ucgui 模拟器出现小小BUG

[复制链接]

3

主题

10

回帖

3

积分

新手上路

积分
3
发表于 2015-4-22 11:24:15 | 显示全部楼层 |阅读模式
#include <stddef.h>在vs2010下进行ucgui模拟仿真时,发现汉字不能显示:运行结果如下:

运行结果

运行结果

汉字库是自己加的,也包含了的。

#include "GUI.h"
#include "DIALOG.h"
#include "WM.h"
#include "BUTTON.h"
#include "CHECKBOX.h"
#include "DROPDOWN.h"
#include "EDIT.h"
#include "FRAMEWIN.h"
#include "LISTBOX.h"
#include "MULTIEDIT.h"
#include "RADIO.h"
#include "SLIDER.h"
#include "TEXT.h"
#include &quotROGBAR.h"
#include "SCROLLBAR.h"
#include "LISTVIEW.h"
/////////////////////////////////////////包含汉字处////////////////////////////////////////////////////////
#ifndef GUI_FLASH
#define GUI_FLASH
#endif
extern GUI_FLASH const GUI_FONT GUI_FontHZ_SimSun_35;
////////////////////////////////////////////////////////////////////////////////////////////////////////////
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
    { FRAMEWIN_CreateIndirect,   NULL,               0,                       0,  0,  800,600,FRAMEWIN_CF_MOVEABLE,0},
    { TEXT_CreateIndirect,      "RJ-003",           GUI_ID_TEXT0,            57, 11, 131,66, 0,0},
    { TEXT_CreateIndirect,      "型 ",               GUI_ID_TEXT1,            179,12, 60, 65, 0,0},
    { TEXT_CreateIndirect,      "声光警报器 ",               GUI_ID_TEXT2,            274,12, 300,65, 0,0},
    { TEXT_CreateIndirect,      "09:32:46",          GUI_ID_TEXT3,            668,11, 115,64, 0,0},
    { BUTTON_CreateIndirect,    "测量",               GUI_ID_BUTTON0,          653,136,130,60, 0,0},
    { BUTTON_CreateIndirect,    "设置",                GUI_ID_BUTTON1,          653,248,130,60, 0,0},  
    { BUTTON_CreateIndirect,    "查询 ",                GUI_ID_BUTTON2,          653,359,130,60, 0,0},
    { BUTTON_CreateIndirect,    "hm",                GUI_ID_BUTTON3,          653,474,130,60, 0,0},
    { TEXT_CreateIndirect,      "1#",                GUI_ID_TEXT4,            221,224,219,57, 0,0},
    { TEXT_CreateIndirect,      "0.037",          GUI_ID_TEXT5,            221,291,236,132,0,0}
};

void PaintDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;
    GUI_SetColor(0x000000);
    GUI_DrawLine(0,100,794,100);
    GUI_SetColor(0x000000);
    GUI_DrawLine(636,100,636,596);
}
void InitDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;
    //
    //FRAMEWIN
    //
    FRAMEWIN_SetClientColor(hWin,0xffffc0);
    FRAMEWIN_SetTitleVis(hWin,0);
    //
    //GUI_ID_TEXT0
    //
    TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT0),0xffffc0);
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&GUI_Font32B_ASCII);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT0),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_TEXT1
    //
    TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT1),0xffffc0);
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT1),&GUI_FontHZ_SimSun_35);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT1),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_TEXT2
    //
    TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT2),0xffffc0);
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT2),&GUI_FontHZ_SimSun_35);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT2),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_TEXT3
    //
    TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT3),0xffffc0);
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT3),&GUI_Font24B_1);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT3),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_BUTTON0
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,0x0000ff);
    BUTTON_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,0x00ffff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),&GUI_FontHZ_SimSun_35);
    //
    //GUI_ID_BUTTON1
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),BUTTON_CI_UNPRESSED,0x000000);
    BUTTON_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),BUTTON_CI_UNPRESSED,0xffffff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),&GUI_FontHZ_SimSun_35);
    //
    //GUI_ID_BUTTON2
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),BUTTON_CI_UNPRESSED,0x000000);
    BUTTON_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),BUTTON_CI_UNPRESSED,0xffffff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),&GUI_FontHZ_SimSun_35);
    //
    //GUI_ID_BUTTON3
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),BUTTON_CI_UNPRESSED,0x000000);
    BUTTON_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),BUTTON_CI_UNPRESSED,0xffffff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),&GUI_Font32B_1);
    //
    //GUI_ID_TEXT4
    //
    TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT4),0xffffc0);
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT4),&GUI_Font32_ASCII);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT4),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_TEXT5
    //
    TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT5),0x000000);
    TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT5),0x00ff00);
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT5),&GUI_FontD36x48);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT5),GUI_TA_VCENTER|GUI_TA_CENTER);
}
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);
    }
}

void MainTask(void)
{
    GUI_Init();
    WM_SetCreateFlags(WM_CF_MEMDEV);
   WM_EnableMemdev(WM_HBKWIN);
    GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbCallback, WM_HBKWIN, 0, 0);
GUI_UC_SetEncodeUTF8();
    while(1)
{
  GUI_Delay(20);
}
}


ex:
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2015-4-22 12:22:51 | 显示全部楼层
把这页的文件编码类型改成UTF-8才行。
回复

使用道具 举报

3

主题

10

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2015-4-22 12:48:29 | 显示全部楼层

回 eric2013 的帖子

eric2013:把这页的文件编码类型改成UTF-8才行。 (2015-04-22 12:22)
是设置成utf-8类型的,但是就不显示
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2015-4-22 12:54:08 | 显示全部楼层
你使用的是这个字体吗GUI_FontHZ_SimSun_35,这个是不是国内的网友做的软件生成的,这个不用设置UTF-8编码。
1. 把这个函数去掉。
2. 还把文件类型改回来。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2015-4-22 14:15:54 | 显示全部楼层
你是不是用的新版emWin5.28,这个版本默认是开启了皮肤色的,一旦开启了皮肤色以后设置背景色是不起作用的。

初始化后,调用下这个函数BUTTON_SetDefaultSkinClassic();
回复

使用道具 举报

3

主题

10

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2015-4-22 15:57:12 | 显示全部楼层

回 eric2013 的帖子

eric2013:你是不是用的新版emWin5.28,这个版本默认是开启了皮肤色的,一旦开启了皮肤色以后设置背景色是不起作用的。

初始化后,调用下这个函数BUTTON_SetDefaultSkinClassic(); (2015-04-22 14:15)
经过您的提点,效果终于正常了。。。感谢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2015-4-22 17:30:55 | 显示全部楼层

回 shan2866 的帖子

shan2866:经过您的提点,效果终于正常了。。。感谢 (2015-04-22 15:57) 
[s:140]
回复

使用道具 举报

3

主题

10

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2015-5-29 14:16:06 | 显示全部楼层

回 eric2013 的帖子

eric2013:[s:140] (2015-04-22 17:30)
硬汉哥,但是又有问题了。。。把仿真好的DEMO拿到MDK编译后,下载到板子上不能显示汉字(自定义的字体),而英文字体可以显示(同样是自定义的字体,同一个文件)。。。这是什么原因导致的呢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2015-6-1 16:03:26 | 显示全部楼层

回 shan2866 的帖子

shan2866:硬汉哥,但是又有问题了。。。把仿真好的DEMO拿到MDK编译后,下载到板子上不能显示汉字(自定义的字体),而英文字体可以显示(同样是自定义的字体,同一个文件)。。。这是什么原因导致的呢 (2015-05-29 14:16) 
传个简单的工程上来,我看看。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-12 16:03 , Processed in 0.273278 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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