中级会员
 
- 积分
- 383
- 金钱
- 383
- 注册时间
- 2014-6-12
- 在线时间
- 35 小时
|
20金钱
一、之前是主函数 Emwin_MainTask(); (界面一) 然后界面一有个BUTTON按键,点下,我在对应的按键回调函数里面写了case WM_NOTIFICATION_CLICKED: Information_MainTask();(界面二),然后再点击界面二上的一个按键,回到第一个界面 case WM_NOTIFICATION_CLICKED: Emwin_MainTask();这样切换一个来回后再点就卡死了,然后我把栈的大小改了下,切换次数达到3次最后还是卡了,不知道什么原因二、然后在原子EMWIN讲解的PDF看到这样一句话,“切勿从回调函数中调用阻塞式函数,否则可能会导致应用程序故障”,虽然我对阻塞式函数不太理解,想着可能是这个原因,然后我程序又做了点修改,修改如下:
1:主函数 while(1)
{
if(Task_Flag==0) Emwin_MainTask();
if(Task_Flag==1) Information_MainTask();
}
PS: Task_Flag是我切面切换的标志位
2:第一个界面 BUTTON按下处理
case WM_NOTIFICATION_CLICKED: Task_Flag=1;
3:第二个界面 BUTTON按下处理
case WM_NOTIFICATION_CLICKED: Task_Flag=0;
这样修改后,发现第一个界面BUTTON按下没有反应,不能进行界面切换了,不知道是什么情况,上述两种情况,麻烦会者给解答下,谢谢!
|
|