硬汉嵌入式论坛

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

[emWin] EMWIN中,字符,画图,都可以正常显示,但GUI_CreateDialogBox后的对话框无法显示。怎么解决。

[复制链接]

56

主题

84

回帖

252

积分

高级会员

积分
252
发表于 4 天前 | 显示全部楼层 |阅读模式
如题。已经开启了GUI_WINSUPPORT。硬汉兄帮忙分析一下,谢谢。创建代码如下:



void emWinTask()
{

        WM_SetCreateFlags(WM_CF_MEMDEV);        //必须在GUI_Init前
        GUI_Init();
        WM_MULTIBUF_Enable(1);
        GUI_SetBkColor(GUI_BLACK);
        GUI_Clear();

        if((hw = InfoPageCreate()) != 0)
        {
                LCD_BK_ON;
        }
}
在InfoPage里的初始化与回调函数:
static void InitDialog(WM_MESSAGE * pMsg)
{
        int i;
        WM_HWIN hWin = pMsg->hWin;
        WM_HWIN hItem;

        for(i = ID_BUTTON_0; i <= ID_BUTTON_5; i++)
        {
                hItem = WM_GetDialogItem(hWin, i);
                BUTTON_SetFont(hItem, &GUI_FontHei20);
                BUTTON_SetText(hItem, "1");
        }
}


static void _cbDialog(WM_MESSAGE * pMsg)
{
    switch (pMsg->MsgId)
    {
        case WM_INIT_DIALOG:

            InitDialog(pMsg);
            break;
        case WM_PAINT:

                        DrawBack();
            break;
        case WM_NOTIFY_PARENT:

            break;
                case WM_TIMER:

                        break;

        default:
            WM_DefaultProc(pMsg);
            break;
    }
}






回复

使用道具 举报

56

主题

84

回帖

252

积分

高级会员

积分
252
 楼主| 发表于 4 天前 | 显示全部楼层
补充说明,任务中循环调用了GUI_Delay(5);
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120427
QQ
发表于 4 天前 | 显示全部楼层
将 WM_MULTIBUF_Enable(1);注释掉,看看正常不
回复

使用道具 举报

56

主题

84

回帖

252

积分

高级会员

积分
252
 楼主| 发表于 4 天前 | 显示全部楼层
eric2013 发表于 2026-1-5 13:16
将 WM_MULTIBUF_Enable(1);注释掉,看看正常不

高。。确实如此。但为什么呢?如何解决呢?不开启WM_MULTIBUF_Enable会有什么问题吗?
回复

使用道具 举报

56

主题

84

回帖

252

积分

高级会员

积分
252
 楼主| 发表于 4 天前 | 显示全部楼层
perfect_co 发表于 2026-1-5 14:14
高。。确实如此。但为什么呢?如何解决呢?不开启WM_MULTIBUF_Enable会有什么问题吗?

另外还有一个新问题:
        GUI_SetFont(&GUI_FontHei20);
        GUI_DispStringAt("abc123", 500, 500);
如上显示是正确的。但如果:
                BUTTON_SetFont(hItem, &GUI_FontHei20);
                BUTTON_SetText(hItem, "ab");
在控件里显示的就不对的,奇奇怪怪的。。但如果用的字库是系统自带的就可以正常。这是什么原因呢?
回复

使用道具 举报

56

主题

84

回帖

252

积分

高级会员

积分
252
 楼主| 发表于 3 天前 | 显示全部楼层
有高人吗,答复一下。。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120427
QQ
发表于 3 天前 | 显示全部楼层
perfect_co 发表于 2026-1-5 14:14
高。。确实如此。但为什么呢?如何解决呢?不开启WM_MULTIBUF_Enable会有什么问题吗?

WM_SetCreateFlags(WM_CF_MEMDEV)和WM_MULTIBUF_Enable(1)二选一即可。

另外如果你仅使用WM_MULTIBUF_Enable(1)不正常的话,说明你的底层驱动里面三缓存实现有问题。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120427
QQ
发表于 3 天前 | 显示全部楼层
perfect_co 发表于 2026-1-5 14:16
另外还有一个新问题:
        GUI_SetFont(&GUI_FontHei20);
        GUI_DispStringAt("abc123", 500, 500);

这种情况没遇到过,当前是用emWin FontCvt生成的小字库吗
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-9 16:58 , Processed in 0.044027 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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