硬汉嵌入式论坛

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

[emWin] 控件被聚焦的情况下,键盘消息优先发给控件,然后才发给窗口回调消息中的WM_KEY

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
发表于 2016-11-27 01:17:27 | 显示全部楼层 |阅读模式
比如当前是聚焦到按钮控件,如果用户调用函数GUI_SendKeyMsg(GUI_KEY_ENTER, 1);
那么此消息会被按钮控件所相应,因为按钮控件支持这个消息,而其它按钮控件不支持的消息,会被回调函数中的WM_KEY消息所响应。

回复

使用道具 举报

335

主题

2036

回帖

3046

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3046
发表于 2016-11-27 09:47:14 | 显示全部楼层
是的。

如果控件响应了这个按键,那么窗口就不会响应了。

如果需要窗口响应,控件需要disable就可以了。
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2016-11-28 15:35:46 | 显示全部楼层
早点发这个撒,搞的我自己测了半天才发现原来是这样的。
EDIT的控件最麻烦,什么按键消息都接收,最不好处理了
回复

使用道具 举报

335

主题

2036

回帖

3046

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3046
发表于 2016-11-29 10:30:29 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:早点发这个撒,搞的我自己测了半天才发现原来是这样的。
EDIT的控件最麻烦,什么按键消息都接收,最不好处理了 (2016-11-28 15:35)
edit控件不相应enter键,可以用enter键的响应来关闭或者打开edit控件的编辑功能。

edit控件也不响应table键,可以用来切换控件。
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2016-11-30 08:59:10 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:edit控件不相应enter键,可以用enter键的响应来关闭或者打开edit控件的编辑功能。

edit控件也不响应table键,可以用来切换控件。 (2016-11-29 10:30)
在有多个不同类型的控件时,TAB键的控件切换顺序是怎么样的呀?
是控件ID号从小到大的切换?
回复

使用道具 举报

335

主题

2036

回帖

3046

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3046
发表于 2016-11-30 17:20:39 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:在有多个不同类型的控件时,TAB键的控件切换顺序是怎么样的呀?
是控件ID号从小到大的切换? (2016-11-30 08:59)
table键的切换顺序,根据资源创建列表的顺序定的。
回复

使用道具 举报

10

主题

23

回帖

63

积分

初级会员

积分
63
发表于 2017-3-7 10:37:23 | 显示全部楼层
谢谢Eric  十分有用  在教程里边发现这个点 的  谢谢Eric[s:151] [s:151]
回复

使用道具 举报

12

主题

22

回帖

58

积分

初级会员

积分
58
发表于 2018-9-21 10:26:17 | 显示全部楼层
请教Eric2013,如果创建的窗口中没有焦点的控件(如图片,Text等),在使用GUI_SendKeyMsg时,是否该窗体无法响应WM_KEY
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
 楼主| 发表于 2018-9-21 15:05:22 | 显示全部楼层
netmouse 发表于 2018-9-21 10:26
请教Eric2013,如果创建的窗口中没有焦点的控件(如图片,Text等),在使用GUI_SendKeyMsg时,是否该窗体无 ...

是的。
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2019-10-25 17:25:47 | 显示全部楼层
我在框架窗口里面创建一个ICONVIEW空间,上下左右按键可以正常响应,但是空间不支持的按键,却不进窗口的回调函数。我后来又给控件单独加了自定义回调函数,这回无论是支持的按键还是不支持的按键,都会进这个自定义函数里面。请教这可能是什么原因呢?
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2019-10-25 17:28:51 | 显示全部楼层
我在框架窗口上添加一个ICONVIEW空间,空间不支持的按键连框架窗口的回调函数都不进,于是我给空间单独加了自定义的回调函数,空间不支持的按键却可以正常进入,这是为何呢?不是说空间不支持的按键,会发送到WM_KEY吗?
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2019-10-25 17:30:35 | 显示全部楼层
“按钮控件不支持的消息,会被回调函数中的WM_KEY消息所响应”,我用的ICONVIEW空间,实测WM_KEY也没有响应啊,请教这是为何呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
 楼主| 发表于 2019-10-25 17:42:50 | 显示全部楼层
云琴箫龙 发表于 2019-10-25 17:28
我在框架窗口上添加一个ICONVIEW空间,空间不支持的按键连框架窗口的回调函数都不进,于是我给空间单独加了 ...

将ICONVIEW换成button是否正常
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2019-10-25 18:29:26 | 显示全部楼层
eric2013 发表于 2019-10-25 17:42
将ICONVIEW换成button是否正常

刚试了一下,换成按键后跟预期的效果一样,控件支持的按键不进WM_KEY,空间不支持的按键进入WM_KEY,这就奇怪了,难道ICONVIEW使用有啥特殊的地方?
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2019-10-25 18:44:07 | 显示全部楼层
eric2013 发表于 2019-10-25 17:42
将ICONVIEW换成button是否正常

参考了一下你智能家居的DEMO,我的实现目跟DEMO是一样的,都是选择图标之后按确认进入对应的界面。发现你里面确认按键的时候是发送的一条自定义的消息,而不是GUI_KEY_ENTER的按键消息,是不是当时也遇到了GUI_KEY_ENTER无法进入回调函数的情况?
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2019-10-25 19:39:08 | 显示全部楼层
云琴箫龙 发表于 2019-10-25 18:29
刚试了一下,换成按键后跟预期的效果一样,控件支持的按键不进WM_KEY,空间不支持的按键进入WM_KEY,这就 ...

调用GUI_GetKey()函数发现,返回的恰恰是ICONVIEW控件不支持的那个键值,似乎控件不支持的键值因为啥原因压根就没发出去啊
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2019-10-25 20:46:23 | 显示全部楼层
eric2013 发表于 2019-10-25 17:42
将ICONVIEW换成button是否正常

去掉框架窗口,直接在背景桌面上创建一个ICONVIEW控件,控件不支持的按键也可以正常进入桌面的回调函数WM_KEY选项,真是奇怪了,为啥在框架窗口上创建就接收不到呢........
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
 楼主| 发表于 2019-10-26 07:19:38 | 显示全部楼层
云琴箫龙 发表于 2019-10-25 20:46
去掉框架窗口,直接在背景桌面上创建一个ICONVIEW控件,控件不支持的按键也可以正常进入桌面的回调函数WM ...

不使用框架窗口和对话框,直接使用window函数WM_CreateWindow创建。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
 楼主| 发表于 2019-10-26 07:20:03 | 显示全部楼层
云琴箫龙 发表于 2019-10-25 18:44
参考了一下你智能家居的DEMO,我的实现目跟DEMO是一样的,都是选择图标之后按确认进入对应的界面。发现你 ...

这个没印象了。
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2019-10-26 17:27:24 | 显示全部楼层
我创建了一个阻塞式对话框,然后在按键扫描任务调用函数GUI_SendKeyMsg(GUI_KEY_ENTER, 1)了后,不出来,其他的按键就扫描不了了,这个该怎么办?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
 楼主| 发表于 2019-10-28 07:46:52 | 显示全部楼层
爱恋之燕 发表于 2019-10-26 17:27
我创建了一个阻塞式对话框,然后在按键扫描任务调用函数GUI_SendKeyMsg(GUI_KEY_ENTER, 1)了后,不出来,其 ...

阻塞的不好用就设置成模态的或者改成发送自定义窗口消息。
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2019-10-28 09:59:37 | 显示全部楼层
eric2013 发表于 2019-10-26 07:19
不使用框架窗口和对话框,直接使用window函数WM_CreateWindow创建。

实测用WM_CreateWindow创建的窗口,控件不支持的按键会被父窗口的WM_KEY调用,而框架窗口无论是直接还是间接创建都不支持WM_KEY,暂时留个疑点,后期有待探究。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
 楼主| 发表于 2019-10-28 10:08:06 | 显示全部楼层
云琴箫龙 发表于 2019-10-28 09:59
实测用WM_CreateWindow创建的窗口,控件不支持的按键会被父窗口的WM_KEY调用,而框架窗口无论是直接还是 ...

那基本就是这个帖子总结的了:

关于emWin控件,窗口,对话框等聚焦问题总结
http://www.armbbs.cn/forum.php?m ... 2182&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2019-10-28 11:11:54 | 显示全部楼层
eric2013 发表于 2019-10-28 10:08
那基本就是这个帖子总结的了:

关于emWin控件,窗口,对话框等聚焦问题总结

感谢硬汉哥持续关注
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2022-9-15 16:38:35 | 显示全部楼层
感谢分享,又把一个模糊易混淆的问题搞清楚了。
Releasing your creativity
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 15:41 , Processed in 0.325486 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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