搜索
bottom↓
回复: 6

对UCGUI中MsgId返回值不解

[复制链接]

出0入0汤圆

发表于 2014-11-3 23:16:53 | 显示全部楼层 |阅读模式
小弟最近在学UCGUI,看到窗口这一节,发现窗口的重绘是通过回调函数来实现的,现有几个疑问,求大神解惑、
1.回调函数格式static void _cbCallback(WM_MESSAGE * pMsg) ;
回调函数的调用是通过GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);函数来实现的,但是这个函数并没有赋给回调函数 任何形参形参,那回调函数中的MsgId是哪里来的?
2.假设参数是来自_aDialogCreate,那么回调函数中
static void _cbCallback(WM_MESSAGE * pMsg)
{
    int NCode, Id;
    WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId)
    {
        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;
     }
}这段函数中的pMsg->MsgId返回值又是怎么来的呢?
3.画了一个BUTTON,如何在回调函数中通过触摸屏的返回值来实现某些功能呢?

出0入264汤圆

发表于 2014-11-3 23:55:06 | 显示全部楼层
记住回调的原则:don't call me, i will call u. 参数由调用者提供。

出0入0汤圆

发表于 2014-11-4 08:21:41 | 显示全部楼层
回调函数是由系统调用的,系统会根据当前发生了什么事件(比如按键按下,窗体重绘),是由哪个控件(.net的说法)产生的事件,然后系统自已填充pMsg,在回调函数中根据pMsg结构体的内容由用户来做出相应的操作。
只用过stemwim,触摸屏的返回值一般在底层移植好后,是由系统自已调用的,系统会根据触摸屏的返回值判断出按键是否被按下。

出0入0汤圆

 楼主| 发表于 2014-11-4 15:35:23 | 显示全部楼层
sunjianmax232 发表于 2014-11-4 08:21
回调函数是由系统调用的,系统会根据当前发生了什么事件(比如按键按下,窗体重绘),是由哪个控件(.net的说 ...

您好请问一下,比如说BUTOON1按下,那返回值是BUTTON1的ID吗

出0入0汤圆

发表于 2014-11-4 17:03:00 | 显示全部楼层
stemwin中,BUTOON1按下时,NCode=WM_NOTIFICATION_CLICKED,Id=ID_BUTTON_1,没用过UCGUI,但看上面的程序应该类似。
这部分和windows编程有点类似。

出0入0汤圆

 楼主| 发表于 2014-11-5 19:31:10 | 显示全部楼层
sunjianmax232 发表于 2014-11-4 17:03
stemwin中,BUTOON1按下时,NCode=WM_NOTIFICATION_CLICKED,Id=ID_BUTTON_1,没用过UCGUI,但看上面的程 ...

您好,还有一个问题,在上面的那个例程中,我怎么知道switch中的那些case取值是什么呢,比如WM_KEY和WM_NOTIFY_PARENT,这些都是定义在WM.H中的

出0入0汤圆

发表于 2014-11-6 08:11:15 | 显示全部楼层
case的取值取决于你要处理的消息类型和产生此消息的控件。常用的消息类型说明在stemwin说明文档316页有介绍。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 08:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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