硬汉嵌入式论坛

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

[μCGUI] 怎么获取当前活动窗口的句柄呢?

[复制链接]

20

主题

92

回帖

152

积分

初级会员

积分
152
发表于 2018-8-23 22:02:38 | 显示全部楼层 |阅读模式
本帖最后由 tovax 于 2018-8-23 22:53 编辑

源码:ucgui3.98

以桌面窗口为父窗口创建对话框DialogA;
按键B触发DialogB的创建,DialogB也是以桌面窗口为父窗口;
按键A触发DialogB的删除,并把DialogA设为焦点窗口;
即通过按键A和B在DialogA和DialogB之间切换;

DialogA和DialogB的句柄分别为handle_A,handle_B;
通过printf打印两者的句柄,handle_A等于5,handle_B等于176。

在两个回调函数中获取活动窗口的句柄:
当使用focus=WM_GetFocussedWindow()时,DialogA处于活动状态时,focus等于10,DialogB处于活动状态时,focus等于180;
当使用focus=WM_GetActiveWindow()时,DialogA处于活动状态时,focus等于5,DialogB处于活动状态时,focus等于176;

为什么这两个函数获取到的句柄和创建对话框时的句柄handle_A、handle_B不一样呢?请问怎么获取当前活动的对话框的句柄呢?


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2018-8-24 00:44:31 | 显示全部楼层
函数WM_GetFocussedWindow()不仅可以获取聚焦的窗口,还可以获取你窗口上的控件,你当前应该就是获取的窗口上的控件。
回复

使用道具 举报

20

主题

92

回帖

152

积分

初级会员

积分
152
 楼主| 发表于 2018-8-24 11:49:16 | 显示全部楼层
eric2013 发表于 2018-8-24 00:44
函数WM_GetFocussedWindow()不仅可以获取聚焦的窗口,还可以获取你窗口上的控件,你当前应该就是获取的窗口 ...

不好意思,这个写错了:
  1. 当使用focus=WM_GetActiveWindow()时,DialogA处于活动状态时,focus等于5,DialogB处于活动状态时,focus等于176;
复制代码

应该是:
  1. 当使用focus=WM_GetActiveWindow()时,DialogA处于活动状态时,focus等于6,DialogB处于活动状态时,focus等于178;
复制代码

也就是说WM_GetFocussedWindow和WM_GetActiveWindow两个函数的返回结果都与创建Dialog时的句柄不一样。
请问怎么样才能只获取焦点窗口,而不获取其上的控件呢?因为我要根据当前焦点窗口,来决定在右上角显示哪张图片。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2018-8-25 01:04:09 | 显示全部楼层
tovax 发表于 2018-8-24 11:49
不好意思,这个写错了:
应该是:
也就是说WM_GetFocussedWindow和WM_GetActiveWindow两个函数的返回结 ...

UCGUI3.X的话,不知道是不是方便,现在新版emWin有禁止控件聚焦的API。

用UCGUI貌似麻烦些。你的这个窗口上面最好使用支持禁止聚焦的控件,这样方便些。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 20:58 , Processed in 0.209186 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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