一 、原理
1、最小化的原理:首先要将窗口隐藏,然后 在右下角绘制图标。
2、恢复的原理:将窗口显示,再将托盘中的图片删除。
二、代码实现
1、自定义消息WM_SHOWTASK: #define WM_SHOWTASK (WM_USER +1) /*为了防止用户定义的消息ID与系统的消息ID冲突,MS定义了一个宏WM_USER,小于WM_USER的ID被系统使用,大于 WM_USER的ID被用户使用。所以是WM_USER +1 */
2、在MFC的::OnSysCommand(UINT nID, LPARAM lParam)函数体中增加一个命令响应
if(nID==SC_MINIMIZE) ToTray(); //最小化到托盘的函数
3、在BEGIN_MESSAGE_MAP(CMy2009Dlg, CDialog)和END_MESSAGE_MAP()中间中添加如下代码
ON_MESSAGE(WM_SHOWTASK,OnShowTask)
其中WM_SHOWTASK是消息名,OnShowTask是自己定义的消息响应函数,后面有说明。
4、最小化到托盘函数
void CMyDlg::ToTray()
{
NOTIFYICONDATA nid;