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

如何检测到我的应用程序是最高的窗口

“hibernate”应用程序有七种方式可以成为“主动”应用程序,基于最小化或简单模糊的组合,以及是否通过alt-tab重新激活,鼠标单击图标,通过从另一个程序发送一个Windows消息重新激活它,或者当应用程序遮住它时closures(或最小化),简单地被“发现”为桌面上最顶级的应用程序。

在所有情况下,我需要知道我的应用程序现在是活动的(例如桌面上的最高级)应用程序,以便我可以从数据库刷新其数据。

我知道应用程序“知道”什么时候是最顶级的,因为一旦它们变成最顶级的,我就可以看到边界变成活动的颜色。

如果我陷阱WM_ACTIVATE_APP消息,这大部分时间工作,但似乎并没有什么时候我的应用程序被最小化,并恢复到活动状态。

如何避免在Windows中双击.bat文件自动closures命令提示

安装程序包含在Wamp上的PEAR的path

(#)在rundll32.exe参数中意味着什么?

在Citrix环境中的用户会话之间相互排斥

Qt链接静态构build的lib

我需要告诉我,我的应用程序现在是最先进和最活跃的,在用户做任何事情之前。

有什么build议么? 谢谢,戴夫

如何运行firebird作为应用程序?

如何在Windows Server 2008 R2上安装Net.Tcp端口共享服务?

如何检出本地svn副本(而不是svn服务器)的子文件夹?

如何debugging在启动时启动的进程?

Windows音量混音器图标大小过大

尝试以下操作:

经过这样的时间之后,数据库中的数据应该被视为过时,请在窗口(或WinForms等效项)上调用InvalidateRect()。 如果你的窗口没有被遮挡,它将立即得到WM_PAINT。 但是,如果窗口被完全遮蔽了,那么在操作系统实际需要显示它之前,它不应该得到WM_PAINT,也就是说,当遮蔽窗口被移动时。 刷新数据库中的数据,以响应WM_PAINT消息。

事实证明, 雷蒙德·陈在2003年的博客上写道 。

经过调查,我找到了我的问题的原因和解决方案。

我发现WM_ACTIVATEAPP消息正在发送(和接收)正常,但是这种情况发生时,应用程序仍处于最小化状态(即恢复之前)。

因为我有一个if测试,当应用程序被最小化(这是毫无意义的,因为用户不会看到结果!)时不做任何事情,所以没有采取任何行动。

WM_ACTIVATEAPP消息是当应用程序被“发现”时发送的,这是可以的,因为应用程序没有被最小化。

我现在也回应WM_WINDOWPOSCHANGED在恢复时被触发,这个组合似乎覆盖了我的应用程序可以重新激活的所有七种方式。

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

相关推荐