最近学时使用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;
}
}
切换界面死机的情况有很多,目前我遇到的情况这样可以解决。记录下方便以后看
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』