NOTIFYICONDATA是一個函數公式主要含義和作用是以此函數用來向任務欄托盤區域發送消息。
函數格式
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。
NOTIFYICONDATA 結構體說明
格式:
typedef struct _NOTIFYICONDATA {
DWORD cbSize;
HWND hWnd;
UINT uID;
UINT uFlags;
UINT uCallbackMessage;
HICON hIcon;
TCHAR szTip[64];
DWORD dwState;
DWORD dwStateMask;
TCHAR szInfo[256];
union {
UINT uTimeout;
UINT uVersion;
};
TCHAR szInfoTitle[64];
DWORD dwInfoFlags;
GUID guidItem;
} NOTIFYICONDATA, *PNOTIFYICONDATA;
成員說明:
cbSize 結構體的大小,以字節爲單位。 hWnd 窗口的句柄。標示的窗口用來接收與托盤圖標相關的消息。Shell_NotifyIcon函數調用時,hWnd和uID成員用來標示具體要操作的圖標。 uID 應用程序定義的任務欄圖標的標識符。Shell_NotifyIcon函數調用時,hWnd和uID成員用來標示具體要操作的圖標。通過將多次調用,你可以使用不同的uID將多個圖標關聯到一個窗口hWnd。 uFlags 此成員表明具體哪些其他成員爲合法數據(即哪些成員起作用)。此成員可以爲以下值的組合: NIF_ICON hIcon成員起作用。 NIF_MESSAGE uCallbackMessage成員起作用。 NIF_TIP szTip成員起作用。 NIF_STATE dwState和dwStateMask成員起作用。 NIF_INFO 使用氣球提示代替普通的工具提示框。szInfo, uTimeout, szInfoTitle和dwInfoFlags成員起作用。 NIF_GUID 保留。 uCallbackMessage 應用程序定義的消息標示。當托盤圖標區域發生鼠標事件或者使用鍵盤選擇或激活圖標時,系統將使用此標示向由hWnd成員標示的窗口發送消息。消息響應函數的wParam參數標示了消息事件發生的任務欄圖標,lParam參數根據事件的不同,包含了鼠標或鍵盤的具體消息,例如當鼠標指針移過托盤圖標時,lParam將爲WM_MOUSEMOVE。 hIcon 增加、修改或刪除的圖標的句柄。注意,windows不同版本對於圖標有不同要求。Windows XP可支持32位。 szTip 指向一個以/0結束的字符串的指針。字符串的內容爲標準工具提示的信息。包含最後的/0字符,szTip最多含有64個字符。 對於Version 5.0 和以後版本,szTip最多含有128個字符(包含最後的/0字符)。 dwState Version 5.0,圖標的狀態,有兩個可選值,如下: NIS_HIDDEN 圖標隱藏 NIS_SHAREDICON 圖標共享 dwStateMask Version 5.0. 指明dwState成員的那些位可以被設置或者訪問。比如設置此成員爲NIS_HIDDEN,將導致只有hidden狀態可以被獲取。 szInfo Version 5.0. 指向一個以/0結束的字符串的指針。字符串的內容爲氣球提示內容。最多含有255個字符。如果要移除已經存在的氣球提示信息,設置uFlags成員爲NIF_INFO,同時將szInfo設爲空。 uTimeout 和uVersion成員爲聯合體。uTimeout表示氣球提示超時的時間,單位爲毫秒,此時間後氣球提示將消失。系統默認氣球提示的超時時間最小值爲10秒,最大值爲30秒。如果設置的uTimeout的值小於10將設置最小值,如果大於30將設置最大值。將超時時間分爲最大最小兩種,是因爲解決不同圖標的氣球提示同時彈出的問題,詳細內容請參考MSDN中NOTIFYICONDATA結構體說明的remarks。 uVersion Version 5.0. 和uTimeout成員爲聯合體。用來設置使用Windows 95 還是 Windows 2000風格的圖標消息接口。請參考Shell_NotifyIcon函數的說明獲取更多信息。只有當使用Shell_NotifyIcon函數發送NIM_SETVERSION消息時,此成員纔有作用。可選的值如下: 0 使用Windows 95風格。針對Windows 2000版本之前的windows設計的軟件請使用此值。 NOTIFYICON_VERSION 使用Windows 2000風格。 針對Windows 2000版本以及以後版本的windows設計的軟件請使用此值。 szInfoTitle Version 5.0. 指向一個以/0結束的字符串的指針。字符串的內容爲氣球提示的標題。此標題出現在氣球提示框的上部,最多含有63個字符。 dwInfoFlags Version 5.0. 設置此成員用來給氣球提示框增加一個圖標。增加的圖標出現在氣球提示標題的左側,注意如果szInfoTitle成員設爲空字符串,則圖標也不會顯示。可選值如下: NIIF_ERROR 錯誤圖標。 NIIF_INFO 信息圖標。 NIIF_NONE 沒有圖標。 NIIF_USER 使用用戶使用hIcon成員指明的圖標,要求Windows XP Service Pack 2 (SP2)或以後系統。 NIIF_WARNING 警告圖標。 NIIF_ICON_MASK Version 6.0. 保留。 NIIF_NOSOUND Version 6.0. 禁止播放相應聲音。 guidItem Version 6.0. 保留。