微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我怎么知道一个窗口是否有焦点? Win32 API

使用Win32 API(在C中,但这是无关紧要的)我怎么知道一个给定的窗口(由HWND标识)是否有焦点? 我挂钩一个应用程序监视一个事件,当这个事件发生时,我想检查应用程序是否已经有焦点。 如果没有,我想闪动窗口,直到他们注意到它。

或者,FlashWindowEx结构标志FLASHW_TIMERNOFG闪烁,直到窗口焦点不闪,如果窗口已经有焦点? 我现在不能testing,因为我不在我的开发环境中,但是我的印象是它会闪烁,这正是我想要避免的。

编辑:此外,如果它很重要,应用程序在此窗口中使用DirectX。

在Qt中释放和恢复embedded式窗口

Direct2D窗口在黑色时未对焦

FindWindow收到的句柄是否需要释放?

程序来发现对象的窗口和button的HWND

我想在特定的航空窗口上禁用阴影效果

处理键盘inputwinapi

我可以在COM方法中传递HWND吗?

这是正确的方式分配一个类的私人HWND到另一个类?

如何从DLL中获取HWND?

在WinMain中hPrevInstance的用途是什么

GetActiveWindow将返回与输入焦点关联的顶级窗口。 GetFocus将返回具有输入焦点的窗口的句柄。

本文可能有所帮助:

http://www.microsoft.com/msj/0397/Win32/Win320397.aspx

除了gkrogers使用GetActiveWindow回答,还可以通过捕获WM_SETFOCUS和WM_KILLFOCUS事件或者WM_ACTIVATE来维护一个你想知道的窗口的布尔变量是否有焦点

WndProc() .. case WM_SETFOCUS: puts( "Got the focus" ) ; break ; case WM_KILLFOCUS: puts( "Lost the focus" ) ; break; case WM_ACTIVATE: if( LOWORD(wparam) == WA_ACTIVE ) puts( "MEGAZORD ACTIVATED kew kew kew (flashy-eyes)" ) ; else puts( "I AM Now INACTIVE." ) ; break ;

你的意思是“专注”还是“积极”?

一个窗口的焦点 – 第一个获得键盘事件的窗口。 如果其中一个子窗口具有焦点,则外部窗口(用户可以在屏幕上拖动)是“活动的”,但是它本身可能有或没有焦点。

使用GetForegroundWindow函数获取您正在关注的Hwnd。 那么你只需要将它与应用程序的窗口进行比较来检查它是否包含焦点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐