2011-11-29 97 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進行檢查。

而且我並不覺得合乎邏輯的聲音具有應用程序最小化時停止播放。畢竟這是一個多任務操作系統。我希望它能夠並行地做事。