转自;http://blog.sina.com.cn/s/blog_61b116b10100ekn0.html
3.增加自定义的消息处理函数或者重载WindowProc函数在消息处理函数或WindowProc函数中对自定义的消息进行处理
//WindowProc中增加的代码
switch(message) //判断消息类型
{
case WM_USER_NOTIFYICON:
//如果是用户定义的消息
if(lParam==WM_LBUTTONDBLCLK)
{
//鼠标双击时主窗口出现
if(AfxGetApp()->m_pMainWnd->IsWindowVisible()) //判断窗口当前状态
{
AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE); //隐藏窗口
}
else
{
AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW); //显示窗口
}
}
else if(lParam==WM_RBUTTONDOWN)
{ //鼠标右键单击弹出选单
CMenu menu;
menu.LoadMenu(IDR_MENU); //载入事先定义的选单
CMenu *pMenu=menu.GetSubMenu(0);
CPoint pos;
GetCursorPos(&pos);
pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd());
}
break;
case WM_SYSCOMMAND:
//如果是系统消息
if(wParam==SC_MINIMIZE)
{
//接收到最小化消息时主窗口隐藏
AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);
return 0;
}
if(wParam==SC_CLOSE)
{
::Shell_NotifyIcon(NIM_DELETE,&m_tnid); //关闭时删除系统托盘图标
}
break;
}