网上搜的代码确实能实现最小化到托盘,但关闭程序时,托盘图标还在,原因是没删除图标,需屏幕刷屏才消失!
其实删除挺简单的,处理一下关闭窗口消息,使用NIM_DELETE就行了,具体看代码...
首先建立基于对话框的MFC应用程序工程testDlg,接下来
一,自定义一个消息WM_SHOWTASK,并关联消息映射函数OnShowTask()
// 关联消息映射函数
// 位于BEGIN_MESSAGE_MAP与END_MESSAGE_MAP之间
ON_MESSAGE(WM_SHOWTASK,OnShowTask)
// 当然要声明和定义OnShowTask()
// 声明
LRESULT OnShowTask(WPARAM wParam, LPARAM lParam) ;
// 定义
LRESULT CtestDlgDlg::OnShowTask(WPARAM wParam, LPARAM lParam)
//wParam接收的是图标的ID,lParam接收的是鼠标的动作
{
if(wParam != IDR_MAINFRAME)
return 1;
if(WM_LBUTTONDBLCLK == lParam)
{
this->ShowWindow(SW_SHOW); // 显示主窗口
}
return 0;
}
二,SC_MINIMIZE、SC_CLOSE消息处理,重载WM_SYSCOMMAND消息处理
以上代码均用VS2008测试过.