最近做MFC程序,有个最小化托盘的需求,看代码:
添加宏定义:
#define WM_SHOWTASK (WM_USER +1)
#define IDR_SHOW 11
#define IDR_OTHER 12
#define IDR_EXIT 13
.h 中添加几个函数及参数(参数用来保存状态):
void Hide2Tray();//最小化到托盘
void Remove2Tray();//删除托盘图标
BOOL isDestory;//用来区分是窗口的X还是托盘的退出
afx_msg LRESULT OnShowTask(WPARAM wParam,LPARAM lParam) ;//对图标做操作
在.cpp中添加
void CTestDemoDlg::Hide2Tray()//最小化到托盘
{
NOTIFYICONDATA nid;
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
//strcpy(nid.szTip,"OA");//信息提示条为“OA”
Shell_NotifyIcon(NIM_ADD,&ni