硬汉嵌入式论坛

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

[emWin] MULTIPAGE和关联窗口的关系是啥?

[复制链接]

98

主题

356

回帖

650

积分

金牌会员

积分
650
发表于 2019-10-29 23:12:14 | 显示全部楼层 |阅读模式
在窗口A上创建一个MULTIPAGE,再创建两个窗口B和C,然后将B和C分别添加到MULTIPAGE的第一页和第二页。仿真函数WM_GetFocussedWindow发现焦点始终在窗口B和C上,强制WM_SetFocus到MULTIPAGE控件上也无效,
但是MULTIPAGE控件这时候以竟然对GUI_KEY_PGUP和GUI_KEY_PGDOWN也有响应,而窗口B和C的回调函数中竟然同时也收到了WM_KEY的消息。
感觉窗口A,B,C不像是父子关系啊,因为我向B,C发送自定义消息WM_SendToParent,三个窗口的回调函数竟然都收不到。
请教硬汉哥,这三者之间到底是啥关系呢?怎样才能向B,C窗口发送自定义消息呢?
目前看来是获取焦点的句柄之后调用WM_SendToParent时,不知道把消息发哪儿去了。
(目的就是想聚焦到MULTIPAGE上,然后能响应GUI_KEY_PGUP和GUI_KEY_PGDOWN,可现象跟预期的不一样)
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2019-10-30 06:25:31 | 显示全部楼层
自定义消息用WM_SendMessage或者WM_SendMessageNoPara
回复

使用道具 举报

98

主题

356

回帖

650

积分

金牌会员

积分
650
 楼主| 发表于 2019-10-30 09:33:36 | 显示全部楼层
eric2013 发表于 2019-10-30 06:25
自定义消息用WM_SendMessage或者WM_SendMessageNoPara

实体按键有变化后,会根据WM_GetFocussedWindow获取当前聚焦的控件,直接给聚焦的控件发送自定义消息显然是不可取的,所以我用的WM_SendToParent直接给其父窗口发送自定义消息。然后在其父窗口的回调函数中分拣出当前控件支持的按键,最后调用GUI_StoreKeyMsg。
现在遇到的问题就是,焦点在窗口B或C上,但获得其父窗口的句柄时返回值却一直是0。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2019-10-30 09:36:15 | 显示全部楼层
云琴箫龙 发表于 2019-10-30 09:33
实体按键有变化后,会根据WM_GetFocussedWindow获取当前聚焦的控件,直接给聚焦的控件发送自定义消息显然 ...

别倒腾这个聚焦了,的确是问题比较多,直接WM_SendMessage或者WM_SendMessageNoPara指定窗口句柄发
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
发表于 2019-10-30 10:03:29 | 显示全部楼层
本帖最后由 caicaptain2 于 2019-10-30 10:09 编辑

看看父窗口是不是默认的WM_HBKWIN  ?
再有,窗口分为框架和client区,看看是不是client区。
还有,dialog上控件的句柄获得是WM_GetDialogItem()。你看你的窗口是哪一种。

还有个小技巧,使用WM_GetParent(hWin)来获得句柄,把所有窗口的父窗口都搞出来,存全局变量,然后用调试模式的变量监控来对比哪个是父窗口。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-18 13:00 , Processed in 0.286763 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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