stemwin 使用GUI_EndDialog切换页面死机的解决

本文介绍在使用EMWin进行界面切换时遇到的死机问题及解决方案。通过在窗口内处理WM_PAINT消息并执行清屏操作,避免了界面切换时的死机现象。代码示例展示了如何在回调函数中实现这一处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近学时使用emwin 在切换窗口时进入HardFault_Handler,后来发现在创建的窗口内没有处理WM_PAINT消息的操作,添加后在case内执行清屏,这样在切换界面时就不会发生死机。示意代码如下:

static void _cbDialog(WM_MESSAGE * pMsg) 
{
    WM_HWIN hItem;
    int     NCode;
    int     Id;

    switch (pMsg->MsgId) 
    {
    case WM_PAINT:
		GUI_SetBkColor(GUI_WHITE);
		GUI_Clear();
    break;
    case WM_NOTIFY_PARENT:
        Id = WM_GetId(pMsg->hWinSrc);
        NCode = pMsg->Data.v;
        switch (Id) 
        { 
        case ID_BUTTON_0: // Notifications sent by 'BACK'
            switch (NCode) 
            {
            case WM_NOTIFICATION_CLICKED:
                break;
            case WM_NOTIFICATION_RELEASED:
                GUI_EndDialog(pMsg->hWin, 0);//结束当前对话框
                g_nKeyHandle = CreateMainWindow();//创建新的页面
                break;
            }
         break;
        }
    break;
   }
}

切换界面死机的情况有很多,目前我遇到的情况这样可以解决。记录下方便以后看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值