|
我是emwin新手,碰到的问题:按下现有窗口上的开关,新开一窗口,按下新开窗口中的开关,又回到原窗口。
如此反复。但循环多几次(9次)就会停在新开窗口上,回不到原窗口,此时,按键上的颜色有变化。
已弄了两天,恳请版主帮忙,万分感谢!(附上程序)
#include "DIALOG.h"
#define ID_WINDOW_0 (GUI_ID_USER + 0x00)
#define ID_BUTTON_0 (GUI_ID_USER + 0x01)
#define ID_BUTTON_1 (GUI_ID_USER + 0x02)
static const GUI_WIDGET_CREATE_INFO _aDialogCreateSetup[] =
{
{ WINDOW_CreateIndirect, "Setup", 0, 0, 0, 800, 480, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "Button", ID_BUTTON_1, 700, 50, 70, 50, 0, 0x0, 0 },
};
///////////////////////////////////////////////////////////////////////////////////////
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 800, 480, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "Button", ID_BUTTON_0, 327, 108, 107, 66, 0, 0x0, 0 },
};
///////////////////////////////////////////////////////////////////////////////////////
static void _cbDialogSetup(WM_MESSAGE * pMsg)
{
EDIT_Handle hEdit;
WM_HWIN hItem;
int NCode;
int Id;
switch (pMsg->MsgId)
{
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id)
{
case ID_BUTTON_1:
switch(NCode)
{
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
WM_DeleteWindow(pMsg->hWin);
break;
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////
static void _cbDialog(WM_MESSAGE * pMsg) {
int NCode;
int Id;
switch (pMsg->MsgId) {
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id) {
case ID_BUTTON_0:
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
GUI_ExecDialogBox(_aDialogCreateSetup, GUI_COUNTOF(_aDialogCreateSetup),_cbDialogSetup, pMsg->hWin,0,0);
break;
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////
WM_HWIN Createttfdsp(void) {
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
return hWin;
} |
|