2011-11-29 100 views
1

我使用在Windows下一个C++应用程序PlaySound功能最小化。 当此应用程序运行本地var命令PlaySound并且它开始播放WAV文件时。停止播放声音和音量时应用

但是,当你点击我的应用程序最小化对话框时,声音会继续播放,当逻辑规则必须被禁止或者静音,直到你再次最大化应用。

的问题是:

有Windows中应用程序状态的应用程序最小化时检测? 为了设置waveOutSetVolume功能0x00 = mute

回答

1

您的应用的窗口是否显示WM_SYSCOMMAND消息,并检查SC_MINIMIZE,SC_MAXIMIZESC_RESTORE通知。当应用程序窗口最小化或最大化

+0

赢了+ d触发WM_SYSCOMMAND? –

+0

不,它没有,因为该功能并没有真正减少应用程序窗口,它只是将桌面窗口带到前台。它,然而,触发'WM_WINDOWPOSCHANGING','WM_GETMINMAXINFO','WM_NCCALCSIZE','WM_WINDOWPOSCHANGED','WM_MOVE','WM_SIZE','WM_STYLECHANGING'和'WM_STYLECHANGED'消息(如由间谍捕获++)。 –

1

您的应用程序将收到一个WM_WINDOWPOSCHANGED消息。检查lParam中的WINDOWPOS结构以确定新状态。然后,您可以分别关闭或打开声音。 (注意:当窗口移动,发送回来等等时,也会发送此消息。因此请检查lParam。)

如果应用程序当前已最小化,则可以使用IsIconic进行检查。

而且我并不觉得合乎逻辑的声音具有应用程序最小化时停止播放。毕竟这是一个多任务操作系统。我希望它能够并行地做事。