給MFC程序添加通知區域圖標
現在起來越多的程序都有一個通知區域圖標(托盤圖標),既美觀又方便。但是MFC不像C#一樣提供NotifyIcon控件,要實現通知區域圖標,就要自己做一個CTrayIcon類或者使用NOTIFYICONDATA結構。
MSDN中關於NOTIFYICONDATA的介紹:
http://msdn.microsoft.com/en-us/library/ms910625.aspx
我在這裏記錄一下自己通過NOTIFYICONDATA實現MFC程序中的通知區域圖標的過程,既是分享,也方便以後自己查閱。
1. 在CMainFrame類(或者是CXxxDlg類)中添加一個NOTIFYICONDATA的結構體變量:
NOTIFYICONDATA m_ntIcon;
並在CMainFrame的OnCreate函數中(或者是OnInitDialog)設置該變量:
m_ntIcon.cbSize = sizeof(NOTIFYICONDATA); //該結構體變量的大小
m_ntIcon.hIcon = AfxGetApp()->LoadIconA(IDR_MAINFRAME); //圖標,通過資源ID得到
m_ntIcon.hWnd = this->m_hWnd; //接收托盤圖標通知消息的窗口句柄
char atip[128] = "a notify icon"; //鼠標設上面時顯示的提示
strcpy_s(m_ntIcon.szTip, 128, atip);
m_ntIcon.uCallbackMessage = MY_WM_NOTIFYICON; //應用程序定義的消息ID號
m_ntIcon.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP; //圖標的屬性:設置成員uCallbackMessage、hIcon、szTip有效