源代码:http://download.csdn.net/detail/nuptboyzhb/4137784
1. 导入一个托盘图标的资源(.ico)格式;资源ID为IDI_ICON1
2. 在框架程序的初始化函数中,初始化一个托盘图标的一个结构体
NOTIFYICONDATA ;//NOTIFYICONDATA结构
;//为notifyicondata结构体分配空间
//为notifyicondata结构体各个参数赋值
;//窗口的句柄
= IDI_NOTIFYICON; //ID标识
= NIF_MESSAGE|NIF_ICON|NIF_TIP;
;我们要为回调消息的标识添加用户消息映射
;//加载托盘图标
Shell_NotifyIcon(NIM_ADD, ¬ifyicondata); //装载托盘图标 注意:在该步骤中有几个注意的变量: a. m_hWnd是整个应用程序窗口的句柄 b. IDI_NOTIFYICON是我们自己定义的一个常量;即在头文件上添加如下代码: #define IDI_NOTIFYICON 100 //托盘图标标识 c. WM_ADDTRAYICON是我们自定义消息的标识,也是一个常量; #define WM_ADDTRAYICON WM_USER+101//自定义消息 3. 添加用户消息映射和消息处理函数 1. 添加成员函数: afx_msg LRESULT OnAddTrayIcon(WPARAM wParam,LPARAM lParam); 2. 添加消息映射 ON_MESSAGE)//添加消息映射 注意:第一个参数是用户自定义消息的标识;第二个参数是消息响应处理函数 3. 实现消息响应处理函数OnAddTrayIcon LRESULT 类名::OnAddTrayIcon(WPARAM wParam,LPARAM lParam) { )//为创建的托盘图标 { switch(lParam)//消息的类型 { ://双击左键 //实习窗口的隐藏或显示 //AfxGetApp;//隐藏窗口 break; ://双击右键 { AfxGetApp;//关闭窗口 break; } ://右击托盘,显示菜单 { ,*pSubMenu; //后面要用的CMenu对象 point; (IDR_POPUP_MENU); //装载自定义的右键菜单 (0); //获取第一个弹出菜单 GetCursorPos(&point); //获取当前光标位置 pSubMenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this); break; } } } 1; } 4. 卸载托盘。 当应用程序退出时,卸载 NOTIFYICONDATA notifyicondata; (NOTIFYICONDATA); = 0; = m_hWnd; = IDI_NOTIFYICON; Shell_NotifyIcon;//卸载托盘图标 NOTIFYICONDATA结构体的uCallbackMessage变量,使得用户消息响应与托盘的点击等消息关联在一起;托盘的标识IDI_NOTIFYICON,恰好是用户消息响应用来判断是否是托盘传递的消息的依据; 在基于多文档或单文档的应用程序,当用户点击最小化按钮时,我们可以讲界面隐藏; 具体是,添加OnSize()消息 void CMainFrame::OnSize(UINT nType, int cx, int cy) { cy); == SIZE_MINIMIZED) { (SW_HIDE); // 当最小化时,隐藏主窗口 } // TODO: 在此处添加消息处理程序代码 } 对话框的最小化托盘于此很类似,可以参考:http://justtotry.blog.163.com/blog/static/446308122011622101427208/