硬汉嵌入式论坛

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

[emWin] emWin 怎么检查TAB键切换之后那个控件具有焦点

[复制链接]

6

主题

14

回帖

32

积分

新手上路

积分
32
发表于 2020-1-4 19:30:07 | 显示全部楼层 |阅读模式
咨询一个版主,如图片里面的:按下TAB键可以切换按钮ON和OFF,在WM_PAINT消息内怎么根据TAB键切换之后焦点显示图标?
1.我使用 WM_GetFocusedWindow()函数(
返回具有输入焦点的窗口的句柄。)来得到具有焦点窗口的句柄,判断是否等于某个空间的句柄,然后显示相应图标,但是这种测试不成功;
2.
我使用 WM_HasFocus()函数(检查给定窗口是否具有输入焦点。 )来判断某个按钮是否具有焦点,然后显示相应图标,但是这种测试不成功;



不懂为什么,按下TAB键之后,按钮可以切换,且按钮也显示了选中之后的现象,但是就是不能检查的焦点?
版主是否有更好的方法来判断TAB键切换之后判断是否停留在哪个控件上?
QQ截图20200104192224.png
回复

使用道具 举报

6

主题

14

回帖

32

积分

新手上路

积分
32
 楼主| 发表于 2020-1-4 22:49:09 | 显示全部楼层
补充:调试发现可以得到TAB切换后的焦点控件句柄,但是就是GUI_DrawBitmap(&bmVoiceOff_Icon22x22_Red, 40, 45);和GUI_DrawBitmap(&bmVoiceOn_Icon22x22_Blue, 20, 45);        不执行,不能汇出响应的图标,不懂为什么不执行。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107393
QQ
发表于 2020-1-5 01:03:11 | 显示全部楼层
根据你这几天的问题来看,不建议你用聚焦了,用窗口自定义消息吧,简单省事。
回复

使用道具 举报

6

主题

14

回帖

32

积分

新手上路

积分
32
 楼主| 发表于 2020-1-5 08:29:48 | 显示全部楼层
eric2013 发表于 2020-1-5 01:03
根据你这几天的问题来看,不建议你用聚焦了,用窗口自定义消息吧,简单省事。

版主,我这边现在断点调试:按下TAB键可以切换焦点在2个按钮之间,断点调试也发现可以识别进入到响应的分支程序,现在发现一个非常奇怪的现象,进入之后不能绘制位图和显示文字,这个遇到过吗?
WM_PAINT里面不能绘制2D图形,感觉非常奇怪,第一次切换到这个页面的时候,可以正确显示位图,但是这种就不行了。
QQ截图20200105082555.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107393
QQ
发表于 2020-1-6 09:31:45 | 显示全部楼层
Julius0072008 发表于 2020-1-5 08:29
版主,我这边现在断点调试:按下TAB键可以切换焦点在2个按钮之间,断点调试也发现可以识别进入到响应的分 ...

直接绘制位图和文字看看是否正常
回复

使用道具 举报

336

主题

2042

回帖

3055

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3055
发表于 2020-1-6 12:27:30 | 显示全部楼层
本帖最后由 caicaptain2 于 2020-1-6 12:33 编辑

我感觉你的问题是,检查焦点的时候,不能放在wm_paint消息里面。 还有,wm_hasfocus只是判断这个窗口能否接受焦点。
WM_GetFocusedWindow() 应该是可以正常使用的。


回复

使用道具 举报

336

主题

2042

回帖

3055

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3055
发表于 2020-1-6 12:28:33 | 显示全部楼层
本帖最后由 caicaptain2 于 2020-1-6 12:33 编辑

你的这个需求,可以在按键的消息里面进行绘图。 按键可以得到一个关于聚焦的消息。
WM_NOTIFICATION_GOT_FOCUS .........402
WM_NOTIFICATION_LOST_FOCUS .......402


回复

使用道具 举报

6

主题

14

回帖

32

积分

新手上路

积分
32
 楼主| 发表于 2020-1-7 21:18:24 | 显示全部楼层
eric2013 发表于 2020-1-6 09:31
直接绘制位图和文字看看是否正常

直接绘制可以的;
回复

使用道具 举报

6

主题

14

回帖

32

积分

新手上路

积分
32
 楼主| 发表于 2020-1-7 21:19:48 | 显示全部楼层
caicaptain2 发表于 2020-1-6 12:28
你的这个需求,可以在按键的消息里面进行绘图。 按键可以得到一个关于聚焦的消息。
WM_NOTIFICATION_GOT_F ...

这两个消息我尝试了,是不行的;
按钮是控件,这两个消息是针对窗口的,我反正觉得非常奇怪;
回复

使用道具 举报

9

主题

34

回帖

61

积分

初级会员

积分
61
发表于 2020-5-7 17:26:44 | 显示全部楼层
eric2013 发表于 2020-1-5 01:03
根据你这几天的问题来看,不建议你用聚焦了,用窗口自定义消息吧,简单省事。

请问硬汉大哥:

对于下面这种情况——

只有上下左右及确认按键,需要多个界面切换,各个界面操作的时候,按键的功能还不完全一样。

这种典型的实体按键场景,用窗口自定义消息是否合适?

目前有哪个例程用窗口自定义消息和上面应用场景比较接近?

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107393
QQ
发表于 2020-5-7 17:50:28 | 显示全部楼层
jerry2020 发表于 2020-5-7 17:26
请问硬汉大哥:

对于下面这种情况——

ATM机的可以搞搞。
回复

使用道具 举报

9

主题

34

回帖

61

积分

初级会员

积分
61
发表于 2020-5-7 17:54:27 | 显示全部楼层
eric2013 发表于 2020-5-7 17:50
ATM机的可以搞搞。

好的

像这种各个界面操作的时候,按键的功能还不完全一样的处理,使用窗口自定义消息之外,有没有其他常规的办法?
回复

使用道具 举报

19

主题

379

回帖

436

积分

高级会员

积分
436
发表于 2020-5-7 20:46:23 | 显示全部楼层
应该用GUIBuilder画Image吧,比如这样:
作为Dialog的一部分。。。
hItem = WM_GetDialogItem (pMsg->hWin, ID_IMAGE_0);
IMAGE_SetBitmap (hItem, &bmfish_small_12x7);
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 10:41 , Processed in 0.652328 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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