硬汉嵌入式论坛

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

[emWin] 请问如何获得当前对话框窗口的句柄?

[复制链接]

30

主题

90

回帖

180

积分

初级会员

积分
180
发表于 2016-2-19 16:35:34 | 显示全部楼层 |阅读模式
    我是用 GUI_CreateDialogBox方式套嵌建立多层对话框。
   当无操作时,延时一段时间用WM_SendMessageNoPara发送消息给当前界面来关闭当前界面。
  请问,何获得当前对话框窗口的句柄?我用了WM_GetActiveWindow返回的是窗口句柄而不是对话框的句柄,谢谢!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-2-19 17:03:28 | 显示全部楼层
先调用这个函数返回下:WM_GetClientWindow() 返回客户端窗口的句柄。

将返回的参数填到函数WM_GetActiveWindow再试试看。
回复

使用道具 举报

30

主题

90

回帖

180

积分

初级会员

积分
180
 楼主| 发表于 2016-2-19 17:15:12 | 显示全部楼层
不好意思写错了,用的就是WM_GetActiveWindow函数,返回的是主窗口句柄而不是对话框的句柄。还有其他方法不?或者我用的不对。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-2-20 18:05:32 | 显示全部楼层

回 sss3s 的帖子

sss3s:不好意思写错了,用的就是WM_GetActiveWindow函数,返回的是主窗口句柄而不是对话框的句柄。还有其他方法不?或者我用的不对。 (2016-02-19 17:15) 
确定函数WM_GetActiveWindow里面填的参数是窗口的句柄吧,直接填对话框的句柄可能不行。
回复

使用道具 举报

30

主题

90

回帖

180

积分

初级会员

积分
180
 楼主| 发表于 2016-2-22 09:32:02 | 显示全部楼层
经过实验WM_GetActiveWindow的确获得不到对话框窗口的句柄。除了自己在每个界面添加标志,还有其它方法不?谢谢
回复

使用道具 举报

5

主题

26

回帖

15

积分

新手上路

积分
15
发表于 2016-2-22 14:38:04 | 显示全部楼层
在窗口的回调函数里面,用WM_HWIN hItem = pMsg->hWin;
hItem 就是当前窗口的句柄,我认这种方法应该可以获取。
回复

使用道具 举报

30

主题

90

回帖

180

积分

初级会员

积分
180
 楼主| 发表于 2016-2-22 15:33:07 | 显示全部楼层

回 yl19823442 的帖子

yl19823442:在窗口的回调函数里面,用WM_HWIN hItem = pMsg->hWin;
hItem 就是当前窗口的句柄,我认这种方法应该可以获取。 (2016-02-22 14:38)

您的意思就是声明一个WM_HWIN hItem全局变量,然后在每个窗口的回调函数中读取hItem = pMsg->hWin。我的理解对吗?谢谢
回复

使用道具 举报

5

主题

26

回帖

15

积分

新手上路

积分
15
发表于 2016-2-23 08:34:24 | 显示全部楼层
是的,可以这样。
回复

使用道具 举报

30

主题

90

回帖

180

积分

初级会员

积分
180
 楼主| 发表于 2016-2-23 09:09:13 | 显示全部楼层
[s:151] 非常感谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-17 07:34 , Processed in 0.040350 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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