首页 > 解决方案 > 需要知道 Windows API 才能在我的应用程序被激活时获得回调

问题描述

我有一个 wxWidgets windows 应用程序,我在单击我的应用程序上的某个按钮时启动另一个应用程序,这个新启动的应用程序的行为类似于模式窗口并且我的应用程序被发回,但是当用户使用 Alt+Tab 或单击我的应用程序图标时,我的应用程序出现在前面,而应该显示已经打开的子应用程序

我想出了如何将应用程序放在前面,现在我想知道我是否可以为父应用程序设置回调,只要应用程序被激活(通过 Alt+Tab 或任务栏图标或任何其他方式),就会调用该回调,所以此时我可以将我的子应用程序放在前面。是否有用于此的windwos API?

标签: c++windowswinapi

解决方案


WM_ACTIVATE

发送到正在激活的窗口和正在停用的窗口。如果窗口使用相同的输入队列,则消息是同步发送的,首先发送给被去激活的顶层窗口的窗口过程,然后发送给被激活的顶层窗口的窗口过程。如果窗口使用不同的输入队列,消息是异步发送的,所以窗口立即被激活。

case WM_ACTIVATE: 
{ 
     // test if window is being activated 
     if(LOWORD(wParam)!=WA_INACTIVE) 
     { 
          // application is being activated 
     } 
     else 
     { 
          // application is being deactivated 
     } 
} 
break;

编辑:

如果想用钩子来监控窗口是否被切换,可以参考这个链接。

捕获切换窗口事件(窗口焦点)(Alt+TAB)


推荐阅读