2011-02-11 39 views
3

我有一個程序,可以啓用最小化任務欄的通知區域。爲了實現這一點,我需要一種可靠的方式來檢測用戶何時最小化了應用程序。如何檢測我的應用程序何時最小化?

如何在C++應用程序中使用Windows API?

+0

我只想問一下,如果WM_Destroy是退出什麼將最小化? – 2011-02-11 06:25:36

+0

您是否想要讓程序在用戶點擊最小化按鈕時將自己最小化到通知區域? – 2011-02-11 06:27:40

+0

是的,它是我想知道的在C + + – 2011-02-11 06:29:33

回答

3

當用戶最小化窗口(或者使用框的標題欄,或者通過選擇「最小化」,從系統菜單選項),您的應用程序將收到一個WM_SYSCOMMAND message。該消息的wParam參數將包含值SC_MINIMIZE,該值指示正在請求的系統命令的特定類型。在這種情況下,你不關心lParam

因此,您需要設置消息映射,以偵聽WM_SYSCOMMAND消息,並將wParam設置爲SC_MINIMIZE。一旦收到這樣的消息,你應該執行你的代碼,以最小化你的應用程序到任務欄通知區域,並返回0(表示你已經處理了消息)。

我不確定你使用的是什麼GUI框架。示例代碼對於不同的工具包可能會有很大的不同。以下是你可能會在一條直線的Win32 C應用程序使用哪些:

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

     return 0; 
    } 
    break; 
} 
0

我想你正在尋找WM_SIZE。當你得到這個,檢查wParam得到具體信息。這是MSDN頁面。

WM_SIZE

0

您可以檢查從GetClientRect返回的區域大小 - 如果零它的最小化,爲我工作,但可能不會在所有情況下工作。

0

這就是IsIconic應該確定,但它不一致對我來說。 (哦,爲了一致的方式來確定這...)

相關問題