1. 程式人生 > >win32 托盤圖示的顯示以及閃爍功能

win32 托盤圖示的顯示以及閃爍功能

    最近專案需要實現類似QQ托盤的功能。在收到訊息後要閃爍托盤,並且左擊托盤要實現選單。現模仿QQ實現該方案。

    win32中實現托盤圖示的顯示主要是應用了Shell_NotifyIcon函式。該函式的作用是向狀態列傳送一個訊息。

函式原型編輯

BOOL Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA lpdata );

引數編輯

dwMessage為輸入引數,傳遞傳送的訊息,表明要執行的操作。可選的值如下: NIM_ADD 向托盤區域新增一個圖示。此時第二個引數lpdata指向的NOTIFYICONDATA
結構體中的hWnd和uID成員用來標示這個圖示,以便以後再次使用Shell_NotifyIcon對此圖示操作。 NIM_DELETE 刪除托盤區域的一個圖示。此時第二個引數lpdata指向的NOTIFYICONDATA結構體中的hWnd和uID成員用來標示需要被刪除的這個圖示。 NIM_MODIFY 修改托盤區域的一個圖示。此時第二個引數lpdata指向的NOTIFYICONDATA結構體中的hWnd和uID成員用來標示需要被修改的這個圖示。 NIM_SETFOCUS Version 5.0. 設定焦點。比如當用戶操作托盤圖示彈出選單,而有按下ESC鍵將選單消除後,程式應該使用此訊息來將焦點設定到托盤圖示上。 NIM_SETVERSION Version 5.0. 設定工作列按照第二個引數lpdata指向的NOTIFYICONDATA結構體中的uVersion成員指定的版本號來工作。此訊息可以允許使用者設定是否使用基於Windows2000的version 5.0的風格。uVersion的預設值為0,預設指明瞭使用原始Windows 95圖示訊息風格。具體這兩者的區別請參考msdn中的Shell_NotifyIcon函式說明的Remarks。 lpdata為輸入引數,是指向NOTIFYICONDATA
結構體
指標,結構體內容用來配合第一個引數wMessage進行圖示操作。 如果圖示操作成功返回TRUE,否則返回FALSE。 如果dwMessage引數設為NIM_SETVERSION,則如果版本設定成功返回TRUE,如果設定的版本不支援返回FALSE。 在網上找了一個別人封裝好的托盤類,其實就是將這幾個引數傳送一下。        該類的使用很簡單,現將函式的功能說一下。

     1. void CreateTrayIcon( HWND _RecvHwnd,UINT _IconIDResource,LPCTSTR _ToolTipText = NULL,UINT _Message = NULL/*(UIEVENT_TRAYICON)*/);

    該函式用於在初始化時生成托盤圖示。

      2.void DeleteTrayIcon();

     該函式用於刪除托盤圖示。(PS:退出程式前記得呼叫)
      3.bool SetTooltipText(LPCTSTR _ToolTipText);

      設定滑鼠移動到托盤上的提示資訊。
      4.bool SetTooltipText(UINT _IDResource);

      更換托盤的圖示樣式
     5.CDuiString GetTooltipText() const;
     獲取托盤的提示資訊
    6.bool StartTwinkling();

     圖示閃爍
    7.void StopTwinkling();

    停止圖示閃爍

該類的下載地址為:http://download.csdn.net/detail/suixiangzhe/9322403