金牌会员
积分 1007
金钱 1007
注册时间 2015-7-26
在线时间 108 小时
5 金钱
我的界面中有两个button和一个edit,framewin上方有close,下拉窗口,点一个button在编辑框中显示一个数字,这个功能正常,可是点了close按键没有关闭窗口,没有反应,debug发现
void _cbMenu0_Close(WM_MESSAGE* pMsg) {
if (pMsg->MsgId == WM_NOTIFY_PARENT_REFLECTION) {
WM_DeleteWindow(pMsg->hWinSrc);
GUI_CreateDialogBox(_aDialogCreate_main, GUI_COUNTOF(_aDialogCreate_main), &_cbMain, 0, 0, 0);
return; /* We are done ! */
}
BUTTON_Callback(pMsg);
}
中pMsg->MsgId为not value;我这个例程以前在3.2寸液晶屏上用的很正常,最近做7寸移植拿过来就出了这个问题,触摸显示都还正常,对于这个GUI消息传送机制不太熟悉,这个pMsg->MsgId的值不知道是在哪里确定的,希望各大神赐教,给点建议,下面是这个界面的代码
#include "UI.h"
///////////////////////////////////////////////////////////////////
/**************oˉêyéùÃ÷Çøóò****************************************/
//EventsFunctionList
void OnButton1Clicked_menu0(WM_MESSAGE * pMsg);
void OnButton0Clicked_menu0(WM_MESSAGE * pMsg);
//EndofEventsFunctionList
void _cbMenu0_Close(WM_MESSAGE* pMsg);
/******************************************************************/
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
/**************×êÔ′±íéùÃ÷Çøóò***************************************/
const GUI_WIDGET_CREATE_INFO _aDialogCreate_menu0[4] = {
{ FRAMEWIN_CreateIndirect, "Caption", 0, 0, 0, 800,480,0,0},
{ BUTTON_CreateIndirect, "0", GUI_ID_BUTTON0, 20, 87, 75,50, 0,0},
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT0, 20, 10, 180,64, 0,0},
{ BUTTON_CreateIndirect, "1", GUI_ID_BUTTON1, 125,87, 75,50, 0,0}
};
/******************************************************************/
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
/**************¿Ø¼tÏìó|oˉêy±àD′Çøóò*********************************/
void OnButton0Clicked_menu0(WM_MESSAGE * pMsg)
{
WM_HWIN hWin = pMsg->hWin;
EDIT_AddKey(WM_GetDialogItem(hWin,GUI_ID_EDIT0),'0');
}
void OnButton1Clicked_menu0(WM_MESSAGE * pMsg)
{
WM_HWIN hWin = pMsg->hWin;
EDIT_AddKey(WM_GetDialogItem(hWin,GUI_ID_EDIT0),'1');
/**********′°¿ú»¬¶ˉD§1û******************************************/
// int i;
// for(i=0;i<5;i++)
// {
// WM_MoveWindow(hWin,0,-20);
// GUI_Exec();
// }
}
/******************************************************************/
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
/**************¶Ô»°¿ò½çÃæ3õê¼»ˉÇøóò*********************************/
void InitDialog_menu0(WM_MESSAGE * pMsg)
{
WM_HWIN hWin = pMsg->hWin;
WM_HWIN hWinClose;
//
//FRAMEWIN
//
hWinClose=FRAMEWIN_AddCloseButton(hWin, FRAMEWIN_BUTTON_RIGHT, 0);
FRAMEWIN_AddMaxButton(hWin, FRAMEWIN_BUTTON_RIGHT, 1);
FRAMEWIN_AddMinButton(hWin, FRAMEWIN_BUTTON_RIGHT, 2);
FRAMEWIN_SetTitleHeight(hWin,40);
WM_SetCallback(hWinClose, &_cbMenu0_Close);
//
//GUI_ID_BUTTON0
//
BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,0xffc0c0);
//
//GUI_ID_EDIT0
//
EDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_EDIT0),0,0x00ffff);
EDIT_SetFont(WM_GetDialogItem(hWin,GUI_ID_EDIT0),&GUI_Font24_1);
EDIT_SetMaxLen(WM_GetDialogItem(hWin,GUI_ID_EDIT0),20);
//
//GUI_ID_BUTTON1
//
BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),BUTTON_CI_UNPRESSED,0xffc0c0);
}
/******************************************************************/
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
/**************»Øμ÷oˉêyÇøóò****************************************/
void _cbMenu0_Close(WM_MESSAGE* pMsg) {
if (pMsg->MsgId == WM_NOTIFY_PARENT_REFLECTION) {
WM_DeleteWindow(pMsg->hWinSrc);
GUI_CreateDialogBox(_aDialogCreate_main, GUI_COUNTOF(_aDialogCreate_main), &_cbMain, 0, 0, 0);
return; /* We are done ! */
}
BUTTON_Callback(pMsg);
}
void _cbMenu0(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_menu0(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:
OnButton0Clicked_menu0(pMsg);
break;
}
break;
case GUI_ID_BUTTON1:
switch(NCode)
{
case WM_NOTIFICATION_CLICKED:
OnButton1Clicked_menu0(pMsg);
break;
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/******************************************************************/
////////////////////////////////////////////////////////////////////
我来回答