|

楼主 |
发表于 2015-8-26 08:26:17
|
显示全部楼层
回 eric2013 的帖子
eric2013:
不是进入死循环,可以放在回调函数里面,如果是放在回调函数里面。
在button的点击消息里面可以设置一个text文件控件或者button本身,说明下电机启动中,当程序执行到button的释放消息时,可以更新启动成功。
或者楼主可以在button的消息里面发送一个标志,如果用RTOS就发送一个消息队列等通信机制通知一个任务去执行这个流程。  但是电机运行程序很长,如果放到Button释放消息里,在电机运行过程中,控件不都失效了吗,控件都没法操作了,也就相当于电机程序和回调函数不能同时运行
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;
case GUI_ID_BUTTON0:
switch(NCode)
{
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
if(ButtonStatus==1)
{
GUI_EndDialog(hWin, 1);
s_ucRA8875BusyNow=1;
}
else
{
BUTTON_SetText(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),"停止");
ButtonStatus=1;
MotorRun();
}
break;
case WM_NOTIFICATION_MOVED_OUT:
break;
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
}
} |
|