硬汉嵌入式论坛

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

[emWin] 如何使用物理按键实现窗口切换?

[复制链接]

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2019-7-2 13:48:40 | 显示全部楼层 |阅读模式
本帖最后由 爱恋之燕 于 2019-7-2 13:50 编辑

如何使用物理按键实现窗口切换?之前的项目使用的是触摸屏,可以使用回调函数实现窗口切换,现在改用物理按键了,没有触摸屏,如何实现窗口切换?实际调试中发现,使用GUI_SendKeyMsg这个函数,在对话框的回调函数里没有WM_KEY这个消息,该如何切换窗口?采用自定义消息,又需要目标窗口的句柄,窗口太多了,这样弄也不是办法?或者有没有办法实现,能够自动发消息到当前聚焦的窗口?
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2019-7-2 14:09:23 | 显示全部楼层
GUI_SendKeyMsg这个函数就是发送到当前聚焦的窗口,但是有一点要注意,就是当前窗口必须要有能被聚焦,且能接收键值输入的控件,且该控件处于聚焦状态才行,不然按键消息就发送得不见了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107397
QQ
发表于 2019-7-2 14:42:20 | 显示全部楼层
当前窗口被聚焦或者窗口上的控件有任意一个被聚焦的即可。

使用GUI_SendKeyMsg发送消息时,如果发送的是当前控件不支持的消息类型就会进入到WM_KEY消息里面。
案例的话,参考ATM机,就是这种方式的多窗口切换

第1期:ATM机界面设计
http://www.armbbs.cn/forum.php?m ... 5595&fromuid=58
(出处: 安富莱电子论坛)


回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2019-7-2 15:06:57 | 显示全部楼层
自定义消息一点都不麻烦,你仅需要使用一个全局变量记录当前操作的窗口句柄。

代码不规范,亲人两行泪!
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2019-7-2 15:08:58 | 显示全部楼层
eric2013 发表于 2019-7-2 14:42
当前窗口被聚焦或者窗口上的控件有任意一个被聚焦的即可。

使用GUI_SendKeyMsg发送消息时,如果发送的是 ...

我在测试的时候,就是进入不到WM_KEY消息里面去,窗口也聚焦了,不知道什么原因
回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2019-7-2 15:16:47 | 显示全部楼层
爱恋之燕 发表于 2019-7-2 15:08
我在测试的时候,就是进入不到WM_KEY消息里面去,窗口也聚焦了,不知道什么原因

上程序
代码不规范,亲人两行泪!
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2019-7-2 17:38:36 | 显示全部楼层
本帖最后由 爱恋之燕 于 2019-7-2 17:39 编辑
eric2013 发表于 2019-7-2 14:42
当前窗口被聚焦或者窗口上的控件有任意一个被聚焦的即可。

使用GUI_SendKeyMsg发送消息时,如果发送的是 ...

调试中发现,如果使用WM_CreateWindow创建的窗口,可以进入到WM_KEY消息里去,而使用资源表和GUI_CreateDialogBox创建的窗口(资源表中就只有一个WINDOW_CreateIndirect),则不能进入到WM_KEY消息里去,不知道怎么回事。两种方式创建的窗口,使用的是同一个回调函数。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107397
QQ
发表于 2019-7-3 10:01:34 | 显示全部楼层
爱恋之燕 发表于 2019-7-2 17:38
调试中发现,如果使用WM_CreateWindow创建的窗口,可以进入到WM_KEY消息里去,而使用资源表和GUI_CreateD ...

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

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2019-7-3 10:25:58 | 显示全部楼层
eric2013 发表于 2019-7-3 10:01
关于emWin控件,窗口,对话框等聚焦问题总结
http://www.armbbs.cn/forum.php?mod=viewthread&tid=82 ...

感谢
回复

使用道具 举报

44

主题

158

回帖

290

积分

高级会员

积分
290
发表于 2022-2-12 17:43:24 | 显示全部楼层
eric2013 发表于 2019-7-2 14:42
当前窗口被聚焦或者窗口上的控件有任意一个被聚焦的即可。

使用GUI_SendKeyMsg发送消息时,如果发送的是 ...

请教一下,长按某一物理按键,无论当前在哪个界面,都可以跳转到指定的界面;该怎么实现???
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-30 04:39 , Processed in 0.184191 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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