硬汉嵌入式论坛

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

[emWin] 接不到自定义消息

[复制链接]

36

主题

142

回帖

250

积分

高级会员

积分
250
发表于 2019-12-5 11:39:19 | 显示全部楼层 |阅读模式
在当前窗口在创建一个弹窗,然后通过外部按键件发送消息  ,发现弹窗 不能接收到无参数消息(WM_SendMessageNoPara),可以用WM_SendMessage发送小心,弹窗能响应
hItem = GUI_CreateDialogBox(_aDialogCreateMessage, GUI_COUNTOF(_aDialogCreateMessage), _cbMessageBoxSingleButton, hParent, 0, 0);
WM_MakeModal(hItem);
WM_SetStayOnTop(hItem, 1);


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2019-12-5 20:27:06 | 显示全部楼层
注意参数句柄问题,如果你这个对话框的主体窗口是FrameWin,要使用GetClientxxx函数获取客户区句柄,然后才可以操作。
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-12-6 09:01:35 | 显示全部楼层
eric2013 发表于 2019-12-5 20:27
注意参数句柄问题,如果你这个对话框的主体窗口是FrameWin,要使用GetClientxxx函数获取客户区句柄,然后才 ...

hMessageBoxSingle = CreatMessageBoxSingleButton(hWin);创建弹窗时就得到的他的句柄了
WM_SendMessageNoPara(hMessageBoxSingle, MSG_SHUTDOWN); 这时发送信息 时的参数
#define MSG_SHUTDOWN        (GUI_ID_USER + 33) 有什么问题吗
回复

使用道具 举报

9

主题

140

回帖

187

积分

初级会员

积分
187
QQ
发表于 2019-12-6 09:12:15 | 显示全部楼层
可以使用广播,WM_BroadcastMessage(&msg);广播消息不需句柄,非常好用,但有点注意,广播消息是每个窗口都会收到,这很合理,比如按键了我就广播,每个窗口自行决定处理或不处理
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
发表于 2019-12-6 09:17:48 | 显示全部楼层
allyzc 发表于 2019-12-6 09:12
可以使用广播,WM_BroadcastMessage(&msg);广播消息不需句柄,非常好用,但有点注意,广播消息是每个窗口都 ...

函数这个不错!
使用起来,还是需要判断一下哪个窗口在top或者active吧?
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
发表于 2019-12-6 09:20:10 | 显示全部楼层
eric2013 发表于 2019-12-5 20:27
注意参数句柄问题,如果你这个对话框的主体窗口是FrameWin,要使用GetClientxxx函数获取客户区句柄,然后才 ...

赞同。 单个窗口不是一个句柄,而是有划分的客户区和窗口框架。窗口上的控件又是另外的句柄。 可以使用debug跟踪着看。
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-12-6 10:17:01 | 显示全部楼层
谢谢各位的意见,问题解决修改一下代码,
hMessageBoxSingle = CreatMessageBoxSingleButton(hWin);
hMesItem = WM_GetClientWindow(hMessageBoxSingle);
WM_SendMessageNoPara(hMesItem , MSG_SHUTDOWN);
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-12-6 10:18:58 | 显示全部楼层
但是我还有个问题  之前都是这么用的 给窗口句柄发信息  是可以接到的 ,之前都是单个窗口,没有在窗口之上再建窗口  这有什么问题吗
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2019-12-7 10:36:29 | 显示全部楼层
老虎的菜 发表于 2019-12-6 10:18
但是我还有个问题  之前都是这么用的 给窗口句柄发信息  是可以接到的 ,之前都是单个窗口,没有在窗口之上 ...

有时候是的,但不稳
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-12-9 07:59:14 | 显示全部楼层
eric2013 发表于 2019-12-7 10:36
有时候是的,但不稳

明白了 谢谢硬汉的解答
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-18 12:12 , Processed in 0.237120 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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