.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
具体步骤:在头文件声明全局变量 和一个宏定义;
#define WM_NOTIFYICON WM_USER+1 //鼠标点击托盘图标时发消息用; NOTIFYICONDATA m_Nid; //托盘结构体对象,用于结构赋值 1)初始化: 在主控件CPP构造函数内执行初始化: ::memset(&m_Nid,0,sizeof(m_Nid)); 结构体赋值完毕后下面这句代码是添加图标到右下角的托盘位置 Shell_NotifyIcon(NIM_ADD,&m_Nid); 这个时候 当软件启动的时候就已经添加图标到托盘位置了 如图“中心服务器”; 2)隐藏主窗口: {dy}步完成初始化并添加托盘后 主窗口仍然处于显示状态,当鼠标点击窗口右上角最小化按钮时需要隐藏窗口;这里需要截获用户操作消息!完整步骤如下: 选择编译器的 视图->类试图->找到控件的Dlg类->右键属性 在右侧弹出的属性框内选择“消息”,如图
void CCenterServerDlg::OnSize(UINT nType, int cx, int cy) switch(nType) 到此已经xx隐藏窗口,只剩下右下角的托盘图标; 3)恢复窗口: 当鼠标左键点击右下角的图标时需要恢复窗口 或者鼠标右键点击图标时能弹出菜单->设置->退出等提示; 在{dy}步初始化的时候有这么一条: m_Nid.uCallbackMessage=WM_NOTIFYICON; //消息宏定义 WM_NOTIFYICON 就是点击右下角的图标时系统返回的一个消息 收到这个消息后会调用一个自己写的函数 从而进行相应的处理 包括右键单击 左键单击 双击等等; 具体步骤: 添加注册消息表 BEGIN_MESSAGE_MAP(CCenterServerDlg, CDialog) .. ON_MESSAGE(WM_NOTIFYICON,OnNotifyIcon)//消息 .... END_MESSAGE_MAP() 其中 OnNotifyIcon 为自己写的函数 具体如下: 头文件声明:afx_msg LRESULT OnNotifyIcon(WPARAM wParam, LPARAM lParam); CPP文件定义: LRESULT CCenterServerDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam) { if((int)wParam==IDD_CENTERSERVER_DIALOG)//确认是目标窗口发来的消息(可以省略) } } 到此 只要左键单击托盘图标 窗口就会弹出,弹出后 只要点击窗口的最小化按钮就会隐藏到托盘位置; 注意:当退出程序时要删除托盘图标:Shell_NotifyIcon(NIM_DELETE,&m_Nid); 4)右键单击图标显示菜单: 如图: 。 。 。 ----》明日继续...累了 |