【问题标题】:Event on Application Minimized in C++ Windows API在 C++ Windows API 中最小化的应用程序事件
【发布时间】:2013-06-06 00:35:59
【问题描述】:

Windows 桌面 API 中是否有信号或事件可以告诉我我的应用程序是否处于最小化状态?我查看了 msdn 文档,发现只有在应用程序最小化时调用的最小化事件,而不是在应用程序已经完成最小化并处于最终最小化状态时调用。

当我知道我设置的窗口已最小化并且不妨碍屏幕截图时,我需要关闭另一个操作(屏幕截图)。我使用 WM_SIZE 消息检查窗口是否最小化,然后开始屏幕捕获。我的问题是,即使我通过 ProcessWindowMessage 回调收到 SIZE_MINIMIZED 消息,在截屏时我仍然可以看到应用程序窗口关闭(即大多数应用程序窗口完成的最小化动画)。我需要一些东西来告诉我应用程序已完全最小化,而不是妨碍我对整个桌面进行的屏幕截图。

谢谢!

【问题讨论】:

  • 您的问题标题要求“事件”,您的问题还要求检查状态。你问的不是很清楚。
  • 似乎每种阅读方式都有一个答案。 :)

标签: c++ winapi minimize


【解决方案1】:

你可能想要IsIconic();如果您的窗口被最小化,那么 API 将返回非零值。

【讨论】:

    【解决方案2】:

    我相信您正在寻找WM_SIZE 消息。它将在窗口大小更改后发送。如果您的窗口被最小化,wParam 变量应该等于SIZE_MINIMIZED

    【讨论】:

      【解决方案3】:

      您可以尝试这里提到的解决方案: How could I detect when my application is minimized?

      ~截图:

      switch (message)
      {
      case WM_SYSCOMMAND:
          if ((wParam & 0xFFF0) == SC_MINIMIZE)
          {
              // shrink the application to the notification area
              // ...
      
              return 0;
          }
          break;
      }
      

      或者试试 GetWindowPlacement 函数: https://msdn.microsoft.com/en-us/library/windows/desktop/ms633518(v=vs.85).aspx

      ~剪辑

      检索显示状态以及指定窗口的恢复、最小化和最大化位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-15
        • 2012-04-09
        • 2010-10-30
        • 2011-07-15
        • 2016-03-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多