硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4013|回复: 1
收起左侧

[emWin] emwin的消息是怎么传递的

[复制链接]

3

主题

6

回帖

15

积分

新手上路

积分
15
发表于 2019-9-10 17:23:56 | 显示全部楼层 |阅读模式
emwin的消息是怎么传递的,看例程是改变全局变量而已,这不是传值吧,我修改为传指针怎么都不行,具体该怎么搞啊
case WM_MSGUSER:
                EDIT_SetText(WM_GetDialogItem(pMsg->hWin, ID_EDIT_0), dispE ? "759" : "123");
                //EDIT_SetText(WM_GetDialogItem(pMsg->hWin, ID_EDIT_0),  &message.Data.p);  //是这样吗
                break;
        case WM_INIT_DIALOG://初始化消息,创建窗口/控件时有效,比如在这里设置一些控件的初始参数
                hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0);
                EDIT_SetText(hItem, "123");
                EDIT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);

                hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
                BUTTON_SetText(hItem, "Focus To Edit");

                hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
                BUTTON_SetText(hItem, "Send Message");
                break;
        case WM_NOTIFY_PARENT://操作触发消息处理(操作屏幕程序会跑到这里),比如点击按键、点击编辑框(任何的操作)等等......
                Id                = WM_GetId(pMsg->hWinSrc);
                NCode = pMsg->Data.v;
                switch(Id) {
                case ID_EDIT_0:
                        switch(NCode) {
                        case WM_NOTIFICATION_CLICKED:
                                break;
                        case WM_NOTIFICATION_RELEASED:
                                break;
                        case WM_NOTIFICATION_VALUE_CHANGED:
                                break;
                        }
                        break;
                case ID_BUTTON_0:                                                                                                                //ID为ID_BUTTON_0的按键被点击
                        switch(NCode) {
                        case WM_NOTIFICATION_CLICKED:                                                        //按下动作消息
                                break;
                        case WM_NOTIFICATION_RELEASED:                                                //弹起动作消息
                                WM_SetFocus(WM_GetDialogItem(pMsg->hWin, ID_EDIT_0));                //聚焦到ID_EDIT_0控件
                                break;
                        }
                        break;
                case ID_BUTTON_1:                                                                                                                //ID为ID_BUTTON_1的按键被点击
                        switch(NCode) {
                        case WM_NOTIFICATION_CLICKED:                                                        //按下动作消息
                                break;
                        case WM_NOTIFICATION_RELEASED:                                                //弹起动作消息
                                dispE = !dispE;
                                message.MsgId = WM_MSGUSER;
                               //message.Data.p = buffer;   //这个该怎么传  
                                //发送消息到Framewin的Client(客户区窗口),本函数即为该Client窗口的回调函数,也就是发送消息到本函数,pMsg->hWin是Framewin句柄(非Client区句柄)
                                WM_SendMessage(WM_GetClientWindow(pMsg->hWin), &message);
                                break;
                        }
                        break;

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-9-11 09:46:41 | 显示全部楼层
自己给自己发不是多此一举吗,直接在按钮的回调函数执行就行了。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-18 07:13 , Processed in 0.233223 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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