|
本人在程序中设置了一个定时器,定时刷新界面,可是就是不启动,请大家帮帮忙!程序如下。
const GUI_WIDGET_CREATE_INFO _APP_CNC_AUTO[] = {
{ FRAMEWIN_CreateIndirect, "", 0, 0, 0, 800, 443, 0, 0,GUI_TA_HCENTER},
{ MULTIEDIT_CreateIndirect, "" , GUI_ID_MULTIEDIT0, 2, 5, 320, 240,MULTIEDIT_CF_READONLY}, //图像显示区域
{ MULTIEDIT_CreateIndirect, "" , ID_MULTIEDIT_17, 445, 2, 345, 350,MULTIEDIT_CF_READONLY},
{ TEXT_CreateIndirect, "当前坐标", ID_TEXT_1, 450, 5, 64, 16, 0, 0},
{ TEXT_CreateIndirect, "X:", ID_TEXT_2, 460, 25, 36, 24, 0, 0},
{ MULTIEDIT_CreateIndirect, "" , ID_MULTIEDIT_1, 550, 25, 235, 30,MULTIEDIT_CF_READONLY}, //X: 当前坐标
{ TEXT_CreateIndirect, "", ID_TEXT_3, 550, 25, 235, 30, 0, 0}, //X轴数值显示
...........................
};
void _InitCNCDialogShow(WM_MESSAGE * pMsg)
{
WM_HWIN hWin = pMsg->hWin;
BUTTON_SetFont(WM_GetDialogItem(hWin,ID_BOTTON_0),&GUI_FontHZ_SimSun_1616);//文本字体
BUTTON_SetTextAlign(WM_GetDialogItem(hWin,ID_BOTTON_0),GUI_TA_CENTER|GUI_TA_VCENTER); //文本右水平与垂直居中对齐
MULTIEDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_MULTIEDIT0),MULTIEDIT_CI_READONLY,GUI_BLUE);
TEXT_SetTextColor(WM_GetDialogItem(hWin,ID_TEXT_1),GUI_MAGENTA);
TEXT_SetFont(WM_GetDialogItem(hWin,ID_TEXT_1),&GUI_FontHZ_SimSun_1616);//文本字体
TEXT_SetTextAlign(WM_GetDialogItem(hWin,ID_TEXT_1),GUI_TA_CENTER|GUI_TA_VCENTER); //文本右水平与垂直居中对齐 。。。。。。。。。。。。。
}
void Caculate_CNCNUM(WM_MESSAGE * pMsg)
{
char buf[1];
WM_HWIN hWin = pMsg->hWin;
sprintf(buf,"%6d",Coord.X);
TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_3), buf);
sprintf(buf,"%6d",Coord.Y);
TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_5), buf);
sprintf(buf,"%6d",Coord.Z);
TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_7), buf);
sprintf(buf,"%6d",Coord.A);
TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_9), buf);
sprintf(buf,"%3.2f",Coord.X1);
TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_12), buf);
sprintf(buf,"%3.2f",Coord.Y1);
TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_14), buf);
sprintf(buf,"%3.2f",Coord.Z1);
TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_16), buf);
sprintf(buf,"%3.2f",Coord.A1);
TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_18), buf);
sprintf(buf,"%4d",Speed.MOTO[0]);
TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_25), buf);
}void _cncCallback(WM_MESSAGE * pMsg)
{
int i, NCode, Id, Value;
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_TIMER:
Caculate_CNCNUM(pMsg);
WM_RestartTimer(pMsg->Data.v, 100); //重启定时器
break;
case WM_PAINT:
break;
case WM_INIT_DIALOG:
_InitCNCDialogShow(pMsg); //对话框
break;
case WM_NOTIFY_PARENT: //告知父窗口,其子窗口中发生了某些改变。
Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */
NCode = pMsg->Data.v; /* Notification code */
switch (NCode)
{
case WM_NOTIFICATION_CLICKED:
switch (Id)
{
case ID_BOTTON_0:
break;
}
break;
default:
WM_DefaultProc(pMsg);
}
}
void APP_CNC_AUTO (void)
{
WM_HWIN hWin2;
hWin2=GUI_CreateDialogBox(_APP_CNC_Munm, GUI_COUNTOF(_APP_CNC_Munm), &_cncCallback, 0, 0, 0);
FRAMEWIN_SetText(hWin2,"CNC_system demo MODE:手动"); WM_CreateTimer(WM_GetClientWindow(hWin2), 0, 100, while (1)
{
GUI_Delay(10);
}
}启动很正常,其它功能也正常,就是WM_TIMER不能定时刷新。仿真发现WM_TIMER根本没有工作。求助!!!!!!!!! |
|