【问题标题】:Stop playing sound and volume when application is minimized最小化应用程序时停止播放声音和音量
【发布时间】:2011-11-29 19:35:08
【问题描述】:

我在 Windows 下的一个 C++ 应用程序中使用了PlaySound 函数。 当此应用程序运行本地 var 命令PlaySound 并开始播放 WAV 文件时。

但是当您单击我的应用程序的最小化对话框时,声音会继续播放,此时必须将逻辑规则静音或静音,直到您再次最大化应用程序。

问题是:

Windows 中是否有应用程序状态来检测应用程序何时被最小化? 为了用0x00 = mute设置waveOutSetVolume函数。

【问题讨论】:

    标签: c++ winapi audio


    【解决方案1】:

    让您的应用程序窗口捕捉WM_SYSCOMMAND 消息并检查它是否有SC_MINIMIZESC_MAXIMIZESC_RESTORE 通知。

    【讨论】:

    • Win+D会触发WM_SYSCOMMAND吗?
    • 不,它没有,因为该功能并没有真正最小化应用程序窗口,它只是将桌面窗口带到前台。但是,它确实会触发 WM_WINDOWPOSCHANGINGWM_GETMINMAXINFOWM_NCCALCSIZEWM_WINDOWPOSCHANGEDWM_MOVEWM_SIZEWM_STYLECHANGINGWM_STYLECHANGED 消息(由 Spy++ 捕获)。
    【解决方案2】:

    当应用程序窗口被最小化或最大化时,您的应用程序将收到WM_WINDOWPOSCHANGED 消息。检查 lParam 中的 WINDOWPOS 结构以确定新状态。然后,您可以分别关闭或打开声音。 (注意:这个消息也会在窗口移动、后退等时发送。所以检查lParam。)

    可以通过IsIconic检查应用程序当前是否最小化。

    而且我认为在应用程序最小化时必须停止播放声音是不合逻辑的。毕竟这是一个多任务操作系统。我希望它并行执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多