shell_notifyicon

Shell_NotifyIcon函式,向系統列的狀態欄傳送一個訊息。

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。
該函式主要用於系統列右側的托盤圖示的操作。在MFC中,實現最小化到托盤的具體操作如下:
1.在Resource里新建一個圖示 Icon 。
2.在窗體類里添加 NOTIFYICONDATA 結構體對象 m_nfData,可以在OnInitDialog()方法裡對結構體進行初始化。
3.重寫OnSize(UINT,int,int)函式,自行處理SIZE_MINIMIZED 訊息,即點擊最小化後的處理。例如:
void CYourProjectDlg::OnSize(UINT nType, int cx, int cy)
{
if( nType == SIZE_MINIMIZED ) //截獲訊息
{
Shell_NotifyIcon(NIM_ADD,&m_nfData);
ShowWindow(SW_HIDE);
}
else //其他訊息按默認處理方式處理
CDialog::OnSize(nType, cx, cy);
}
4.添加訊息映射,處理WM_TRAYICON訊息,即點擊托盤圖示後的處理
ON_MESSAGE(WM_TRAYICON,&CYourProjectDlg::OnTrayIcon)
5.實現訊息映射函式,添加具體操作,例如:
LRESULT CLogCleanToolDlg::OnTrayIcon(WPARAM wParam, LPARAM lParam)
{
if(lParam == WM_LBUTTONDBLCLK) //雙擊托盤圖示
{
Shell_NotifyIcon(NIM_DELETE,&m_nfData);
ShowWindow(SW_SHOWNORMAL);
SetForegroundWindow();
}
return 0;
}
以上就是最常見的用法。如果要其他個性操作,只需修改NOTIFYICONDATA結構體的參數即可。

相關詞條

相關搜尋

熱門詞條

聯絡我們