2015-08-17 41 views

回答

3

你所指的實際上被稱爲通知圖標。正確使用這個術語非常重要,以便我們知道您的意思。無論如何,我認爲我的猜測是準確的。

當創建任務欄時,您需要偵聽廣播到所有頂級窗口的窗口消息。這是documented像這樣:

使用Microsoft Internet Explorer 4.0及更高版本,Shell會通知應用程序任務欄已創建。創建任務欄時,它會使用TaskbarCreated字符串註冊一條消息,然後將此消息廣播到所有頂級窗口。當您的任務欄應用程序收到此消息時,應該假定它添加的任何任務欄圖標已被刪除並再次添加它們。此功能通常僅適用於Shell啓動時已經運行的服務。以下示例顯示了處理此案例的非常簡化的方法。

LRESULT CALLBACK WndProc(HWND hWnd, 
         UINT uMessage, 
         WPARAM wParam, 
         LPARAM lParam) 
{ 
    static UINT s_uTaskbarRestart; 

    switch(uMessage) 
    { 
     case WM_CREATE: 
      s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated")); 
      break; 

     default: 
      if(uMessage == s_uTaskbarRestart) 
       AddTaskbarIcons(); 
      break; 
    } 

    return DefWindowProc(hWnd, uMessage, wParam, lParam); 
} 
相關問題