SetActiveWindow无效是什么情况

孟如庭 2015-11-04 04:36:10
SetActiveWindow,之后,返回的句柄非NULL,也即显示成功。
但是通过GetAvctiveWindow获得活动窗口的标题,和setActiveWindow之前的一样,没有任何变化,这是什么原因呢?
hActiveWnd=GetActiveWindow();
GetWindowTextA(hActiveWnd,szName,sizeof(szName));
...全文
616 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟如庭 2015-11-23
  • 打赏
  • 举报
回复
没找到原因,先结贴吧。有谁有思路,希望能答复
paschen 2015-11-09
  • 打赏
  • 举报
回复
SetWindowPos改Z序?
孟如庭 2015-11-09
  • 打赏
  • 举报
回复
引用 7 楼 feilongjilei 的回复:
调用 SetActiveWindow 之前用 GetActiveWindow 获取一下窗口句柄,然后用 Spy++找到这个窗口分析一下窗口层次和属性,实在不行抓下窗口消息分析一下 猜测是可能是你dll里设置的父窗口有问题,IE 嵌套好几层窗口的,你选择了错误的窗口当父窗口了。
父窗口统一用GetGUIThreadInfo获得的。
if(GetGUIThreadInfo(GetCurrentThreadId(),&UIInfo)) {
 
		if(NULL==UIInfo.hwndActive)
			GetGUIThreadInfo(NULL,&UIInfo);
		hwndParent=UIInfo.hwndActive;
	}
孟如庭 2015-11-09
  • 打赏
  • 举报
回复
引用 8 楼 zgl7903 的回复:
试试 SetForegroundWindow
不行的
孟如庭 2015-11-09
  • 打赏
  • 举报
回复
引用 11 楼 paschen 的回复:
SetWindowPos改Z序?
无效
孟如庭 2015-11-09
  • 打赏
  • 举报
回复
而且这个问题很奇怪的,在有的系统win7出现,而且有时候不出现,比如进入这个dlg运行了两次,第一次都是成功的,第二次进入就不成功
feilongjilei 2015-11-07
  • 打赏
  • 举报
回复
调用 SetActiveWindow 之前用 GetActiveWindow 获取一下窗口句柄,然后用 Spy++找到这个窗口分析一下窗口层次和属性,实在不行抓下窗口消息分析一下 猜测是可能是你dll里设置的父窗口有问题,IE 嵌套好几层窗口的,你选择了错误的窗口当父窗口了。
zgl7903 2015-11-07
  • 打赏
  • 举报
回复
试试 SetForegroundWindow
孟如庭 2015-11-06
  • 打赏
  • 举报
回复
引用 5 楼 anquan88 的回复:
[quote=引用 4 楼 feiyue1206 的回复:] 很奇怪,没找到任何原因
下断点比较下当前窗口句柄和所取得窗口句柄的值[/quote] GetAvctiveWindow-SetActiveWindow-GetAvctiveWindow,还是原来的句柄,也没变化
奋起无迹 2015-11-06
  • 打赏
  • 举报
回复
引用 4 楼 feiyue1206 的回复:
很奇怪,没找到任何原因
下断点比较下当前窗口句柄和所取得窗口句柄的值
孟如庭 2015-11-06
  • 打赏
  • 举报
回复
很奇怪,没找到任何原因
孟如庭 2015-11-05
  • 打赏
  • 举报
回复
引用 2 楼 anquan88 的回复:
非空,又是哪个窗口的句柄呢
MSDN: If the function succeeds, the return value is the handle to the window that was previously active.
奋起无迹 2015-11-04
  • 打赏
  • 举报
回复
非空,又是哪个窗口的句柄呢
孟如庭 2015-11-04
  • 打赏
  • 举报
回复
还有一个问题,不知道跟这个是否有关。 现象是MessageBox无法点击,但是在MessageBox的父窗口上点击一下就可以了。 基本流程是浏览器调用我的dll,dll中弹出一个输入框,在输入框的窗口函数WM_INITDIALOG中SetActiveWindow。输入框关闭后,MessageBox进行提示,但是MessageBox无法点击,没有焦点,拖动MessageBox也无法获得焦点,在父窗口即浏览器上点击一下MessageBox就正常了。 整个流程是这样,不知道什么原因,目前最明显的异常是SetActiveWindow后无效。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧