OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2480|回复: 1

GUI中Close按键没有反应

[复制链接]

27

主题

101

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1007
金钱
1007
注册时间
2015-7-26
在线时间
108 小时
发表于 2016-4-11 14:56:53 | 显示全部楼层 |阅读模式
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();
//         }
}
/******************************************************************/
////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////
/**************&#182;&#212;&#187;°&#191;ò&#189;&#231;&#195;&#230;3&#245;ê&#188;&#187;ˉ&#199;&#248;óò*********************************/
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);

}

/******************************************************************/
////////////////////////////////////////////////////////////////////







////////////////////////////////////////////////////////////////////
/**************&#187;&#216;μ÷oˉêy&#199;&#248;óò****************************************/
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);
    }
}

/******************************************************************/
////////////////////////////////////////////////////////////////////


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

101

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1007
金钱
1007
注册时间
2015-7-26
在线时间
108 小时
 楼主| 发表于 2016-4-11 17:17:49 | 显示全部楼层
发现FRAMEWIN_AddMaxButton,FRAMEWIN_AddMinButton,FRAMEWIN_AddCloseButton这几个控件都不能用,这些地方移植的时候不用修改啊,在我原来3.2寸屏上可以的,都是 if (pMsg->MsgId == WM_NOTIFY_PARENT_REFLECTION)这个地方没通过,就以前是电阻屏,这个是电容屏啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 18:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表