硬汉嵌入式论坛

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

[emWin] emWin通过控件句柄确定控件类型方法

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-7-16 18:13:41 | 显示全部楼层 |阅读模式
1.png
回复

使用道具 举报

2

主题

17

回帖

23

积分

新手上路

小弟跑灯的水平

积分
23
发表于 2016-7-19 09:21:52 | 显示全部楼层
请教硬汉,如果突然弹出了某个对话框,3s后对话框自动关闭,但此时焦点并不会自动设置回上一个窗口,需要手动设置,这个一直困扰着我
我现在的做法是将有焦点功能的窗口部件句柄进行记录,当返回前一个对话框/窗口时对比所有句柄,但后来发现这个做法很浪费内存,请问硬汉是如何处理这种情况的
小弟跑灯的水平
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
 楼主| 发表于 2016-7-19 09:34:21 | 显示全部楼层

回 一直在跑灯 的帖子

一直在跑灯:请教硬汉,如果突然弹出了某个对话框,3s后对话框自动关闭,但此时焦点并不会自动设置回上一个窗口,需要手动设置,这个一直困扰着我
我现在的做法是将有焦点功能的窗口部件句柄进行记录,当返回前一个对话框/窗口时对比所有句柄,但后来发现这个做法很浪费内存,请问硬汉是如何处 .. (2016-07-19 09:21) 
弹出这个对话框前,先获取当前聚焦的窗口,关闭后再重新设置回去,是否可行。
回复

使用道具 举报

2

主题

17

回帖

23

积分

新手上路

小弟跑灯的水平

积分
23
发表于 2016-7-21 09:24:09 | 显示全部楼层

回 eric2013 的帖子

eric2013:弹出这个对话框前,先获取当前聚焦的窗口,关闭后再重新设置回去,是否可行。 (2016-07-19 09:34) 
其实意思就是用一个数组来记录所有上一级对话框的焦点,当关闭当前对话框时重新设置上一级对话框的焦点?
小弟跑灯的水平
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
 楼主| 发表于 2016-7-21 10:52:20 | 显示全部楼层

回 一直在跑灯 的帖子

一直在跑灯:其实意思就是用一个数组来记录所有上一级对话框的焦点,当关闭当前对话框时重新设置上一级对话框的焦点? (2016-07-21 09:24) 
这两个函数:WM_GetFocussedWindow()和WM_SetFocus()配合使用,是否可行
回复

使用道具 举报

2

主题

17

回帖

23

积分

新手上路

小弟跑灯的水平

积分
23
发表于 2016-7-21 14:25:14 | 显示全部楼层

回 eric2013 的帖子

eric2013:这两个函数:WM_GetFocussedWindow()和WM_SetFocus()配合使用,是否可行 (2016-07-21 10:52)
我现在就是用这2个函数来获取当前焦点和重新设置焦点的,只是发现这样做非常不好,因为即使用对话框的句柄来设置焦点,但最终设置的焦点是对话框里面首个具有输入焦点的控件的句柄(如编辑框),举个例子吧,假设对话框A的句柄是hDialogA,对话框A里面的编辑框句柄是hItemEdit1:
WM_SetFocus(hDialogA);
hItem = WM_GetFocussedWindow();
此时hItem == hItemEdit1而并非hDialogA,所以造成了一个非常大的困扰:无法知道当前到底打开的是哪个对话框!

我也有尝试过使用WM_GetParent()和WM_GetActiveWindow,前者虽然能够获取父窗口句柄,只可惜不是当前对话框的句柄,后者就不用说了,emWin手册上已经说明只能用在WM_PAINT的情况
小弟跑灯的水平
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
 楼主| 发表于 2016-7-22 10:40:44 | 显示全部楼层

回 一直在跑灯 的帖子

一直在跑灯:我现在就是用这2个函数来获取当前焦点和重新设置焦点的,只是发现这样做非常不好,因为即使用对话框的句柄来设置焦点,但最终设置的焦点是对话框里面首个具有输入焦点的控件的句柄(如编辑框),举个例子吧,假设对话框A的句柄是hDialogA,对话框A里面的编辑框句柄是hItemEdit1: .. (2016-07-21 14:25) 
对话框弹出前,调用WM_GetFocussedWindow,是否可行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-17 08:51 , Processed in 0.042233 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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