天天看點

MFC中視窗最小化到托盤處

1,自定義消息宏和NOTIFYICONDATA結構體

        #define WM_NC (WM_USER+1001)

        NOTIFYICONDATA NotifyIcon;

NOTIFYICONDATA結構包含了系統用來處理托盤圖示的資訊,它包括選擇的圖示、回調消息、提示消息、圖示對應的視窗等内容。其定義為:

 typedef struct _NOTIFYICONDATA {

DWORD  cbSize;         //以位元組為機關的這個結構的大小

       HWND   hWnd;   //接收托盤圖示通知消息的視窗句柄

UINT     uID;       //應用程式定義的該圖示的ID号

       UINT     uFlags;     //設定該圖示的屬性

       UINT  uCallbackMessage;//應用程式定義的消息ID号,此消息傳遞給hWnd

       HICON  hIcon;        //圖示的句柄

       char      szTip[64];         //滑鼠停留在圖示上顯示的提示資訊

DWORD      dwState;

DWORD   dwStateMask;

TCHAR    szInfo[256];

union      {

UINTuTimeout;

UINT uVersion;

                 };

TCHAR szInfoTitle[64];

DWORD dwInfoFlags;

GUID guidItem;

            } NOTIFYICONDATA,*PNOTIFYICONDATA;

該結構中,成員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位。 

dwState

Version5.0,圖示的狀态,有兩個可選值,如下:

NIS_HIDDEN                     圖示隐藏

NIS_SHAREDICON           圖示共享

dwStateMask 

uTimeout

和uVersion成員為聯合體。uTimeout表示氣球提示逾時的時間,機關為毫秒,此時間後氣球提示将消失。系統預設氣球提示的逾時時間最小值為10秒,最大值為30秒。如果設定的uTimeout的值小于10将設定最小值,如果大于30将設定最大值。将逾時時間分為最大最小兩種,是因為解決不同圖示的氣球提示同時彈出的問題,

uVersion

Version5.0. 和uTimeout成員為聯合體。用來設定使用Windows95 還是 Windows 2000風格的圖示消息接口。請參考Shell_NotifyIcon函數的說明擷取更多資訊。隻有當使用Shell_NotifyIcon函數發送NIM_SETVERSION消息時,此成員才有作用。可選的值如下:

0            使用Windows95風格。針對Windows 2000版本之前的windows設計的軟體請使用           此值。

NOTIFYICON_VERSION          使用Windows2000風格。 針對Windows 2000版本以及以後版本的windows設計的軟體請使用此值。 

szInfoTitle

Version5.0. 指向一個以\0結束的字元串的指針。字元串的内容為氣球提示的标題。此标題出現在氣球提示框的上部,最多含有63個字元。

dwInfoFlags

Version5.0. 設定此成員用來給氣球提示框增加一個圖示。增加的圖示出現在氣球提示标題的左側,注意如果szInfoTitle成員設為空字元串,則圖示也不會顯示。可選值如下:

NIIF_ERROR             錯誤圖示。

NIIF_INFO                 資訊圖示。

NIIF_NONE         沒有圖示。

NIIF_USER         使用使用者使用hIcon成員指明的圖示,要求Windows XP Service                                Pack2 (SP2)或以後系統。

NIIF_WARNING         警告圖示。

NIIF_ICON_MASK     Version 6.0. 保留。

NIIF_NOSOUND Version 6.0. 禁止播放相應聲音。

最小化視窗到托盤處實作函數:

void CMainFrame::MINHIDEWINDOW()                  //最小化到托盤處

{

 NotifyIcon.cbSize=sizeof(NOTIFYICONDATA);

 NotifyIcon.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);  //托盤圖示

 NotifyIcon.hWnd=m_hWnd;

 lstrcpy(NotifyIcon.szTip,_T("VC切分程式"));          //提示資訊

 NotifyIcon.uCallbackMessage=WM_NC;            //消息

 NotifyIcon.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;

 Shell_NotifyIcon(NIM_ADD,&NotifyIcon);           //繪制圖示

 ShowWindow(SW_HIDE);

}

托盤圖示右鍵菜單實作:

//快捷菜單消息響應

void CMainFrame::OnNewMenu1()

{

 ModifyStyleEx(0,WS_EX_TOPMOST);                //視窗置頂

 ShowWindow(SW_MAXIMIZE);

 Shell_NotifyIcon(NIM_DELETE, &NotifyIcon);             //删除托盤圖示

}

退出

void CMainFrame::OnNewMenu2()

{

 Shell_NotifyIcon(NIM_DELETE, &NotifyIcon);             //删除托盤圖示

 CMainFrame::OnClose(); 

}

MFC中視窗最小化到托盤處
MFC中視窗最小化到托盤處
MFC中視窗最小化到托盤處



繼續閱讀