最小化应用程序时停止播放声音和音量
Posted
技术标签:
【中文标题】最小化应用程序时停止播放声音和音量【英文标题】: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
函数。
【问题讨论】:
【参考方案1】:让您的应用程序窗口捕捉WM_SYSCOMMAND
消息并检查它是否有SC_MINIMIZE
、SC_MAXIMIZE
和SC_RESTORE
通知。
【讨论】:
Win+D会触发WM_SYSCOMMAND吗? 不,它没有,因为该功能并没有真正最小化应用程序窗口,它只是将桌面窗口带到前台。但是,它确实会触发WM_WINDOWPOSCHANGING
、WM_GETMINMAXINFO
、WM_NCCALCSIZE
、WM_WINDOWPOSCHANGED
、WM_MOVE
、WM_SIZE
、WM_STYLECHANGING
和 WM_STYLECHANGED
消息(由 Spy++ 捕获)。【参考方案2】:
当应用程序窗口被最小化或最大化时,您的应用程序将收到WM_WINDOWPOSCHANGED 消息。检查 lParam 中的 WINDOWPOS 结构以确定新状态。然后,您可以分别关闭或打开声音。 (注意:这个消息也会在窗口移动、后退等时发送。所以检查lParam。)
可以通过IsIconic检查应用程序当前是否最小化。
而且我认为在应用程序最小化时必须停止播放声音是不合逻辑的。毕竟这是一个多任务操作系统。我希望它并行执行。
【讨论】:
以上是关于最小化应用程序时停止播放声音和音量的主要内容,如果未能解决你的问题,请参考以下文章