MFC托盘实例

来源:互联网 发布:党史纵横杂志 知乎 编辑:程序博客网 时间:2024/05/05 10:28
1.添加一个菜单资源,ID为IDR_MENU12.在Resource.h中添加 #define IDN_NOTIFYICON130003.在CXXXDlg.h中添加#define WM_NOTIFYICONWM_USER + 54.在CXXXDlg.h中添加:protected:CMenu menu1;在CXXXDlg构造函数中添加:menu1.LoadMenu(IDR_MENU1);5.添加消息映射ON_WM_DESTROY()ON_WM_CREATE()ON_MESSAGE(WM_NOTIFYICON, OnNotifyIcon)6.添加private成员变量 NOTIFYICONDATA nd;7.在CXXXDlg类中添加以下函数:private:void CTrayTestDlg::InitTray(UINT uCallbackMessage, TCHAR *szTip){nd.cbSize= sizeof (NOTIFYICONDATA);nd.hWnd= m_hWnd;nd.uID= IDN_NOTIFYICON1;nd.uCallbackMessage= uCallbackMessage;nd.hIcon= m_hIcon;nd.uTimeout= 2000;nd.dwState= NIS_SHAREDICON;nd.dwStateMask= 0;nd.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;lstrcpy(nd.szTip, szTip);}private:BOOL CXXXDlg::ShowTray(BOOL bShow){return Shell_NotifyIcon(bShow ? NIM_ADD : NIM_DELETE, &nd);}private:void CXXXDlg::MakeNotifyMessage(LPCTSTR lpText, LPCTSTR lpTitle, DWORD dwInfoFlags){nd.uFlags |= NIF_INFO;lstrcpy(nd.szInfo, lpText);lstrcpy(nd.szInfoTitle, lpTitle);nd.dwInfoFlags = dwInfoFlags;Shell_NotifyIcon(NIM_MODIFY, &nd);// Shell_NotifyIcon(NIM_SETFOCUS, &nd);}public:LRESULT CXXXDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam){switch (wParam){case IDN_NOTIFYICON1:switch (lParam){case WM_LBUTTONDBLCLK:// TODObreak;case WM_LBUTTONDOWN:// TODObreak;case WM_RBUTTONDOWN:{CMenu *pPopupMenu = menu1.GetSubMenu(0);pPopupMenu->SetDefaultItem(ID_MENUITEM1, FALSE);if(IsWindowVisible())pPopupMenu->ModifyMenu(0, MF_BYPOSITION, ID_MENUITEM1, _T("隐藏主界面"));elsepPopupMenu->ModifyMenu(0, MF_BYPOSITION, ID_MENUITEM1, _T("显示主界面"));//pPopupMenu->CheckMenuItem(ID_MENU_FULLSCREEN,MF_CHECKED|MF_BYCOMMAND);//pPopupMenu->CheckMenuItem(ID_MENU_FULLSCREEN,MF_UNCHECKED|MF_BYCOMMAND);CPoint point;GetCursorPos(&point);SetForegroundWindow();pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, AfxGetMainWnd(), 0); }break;default:break;}break;default:break;}return 0;}8.在对话框OnCreate消息响应函数中添加InitTray(WM_NOTIFYICON, _T("my app"));9.在对话框OnDestroy消息响应中添加ShowTray(FALSE);10.在OnInitDialog中添加ShowTray();MakeNotifyMessage(_T("cvb"), _T("my title"), NIIF_INFO);

原创粉丝点击