MFC程序最小化到托盘
来源:互联网 发布:imap.126.com 端口 编辑:程序博客网 时间:2024/04/25 16:48
网上搜的代码确实能实现最小化到托盘,但关闭程序时,托盘图标还在,原因是没删除图标,需屏幕刷屏才消失!
其实删除挺简单的,处理一下关闭窗口消息,使用NIM_DELETE就行了,具体看代码...
一,自定义一个消息WM_SHOWTASK,并关联消息映射函数OnShowTask()
#define WM_SHOWTASK (WM_USER + 1)
ON_MESSAGE(WM_SHOWTASK,OnShowTask)
LRESULT CtestDlgDlg::OnShowTask(WPARAM wParam, LPARAM lParam)
//wParam接收的是图标的ID,lParam接收的是鼠标的动作
{
if(wParam != IDR_MAINFRAME)
return 1;
if(WM_LBUTTONDBLCLK == lParam)
{
ShowWindow(SW_SHOW); // 显示主窗口
}
return 0;
}
二,SC_MINIMIZE、SC_CLOSE消息处理,重载WM_SYSCOMMAND消息处理
if(nID == SC_MINIMIZE) // 最小化窗口
{
NOTIFYICONDATA nid;
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd = this->m_hWnd;
nid.uID = IDR_MAINFRAME;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP ;
nid.uCallbackMessage = WM_SHOWTASK; // 自定义的消息名称
nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy_s(nid.szTip, "程序窗口标题"); // 信息提示条
Shell_NotifyIcon(NIM_ADD, &nid); // 在托盘区添加图标
ShowWindow(SW_HIDE); // 隐藏主窗口
return;
}
else(nID == SC_CLOSE) // 关闭窗口
{
NOTIFYICONDATA nd;
nd.cbSize = sizeof (NOTIFYICONDATA);
nd.hWnd = this->m_hWnd;
nd.uID = IDR_MAINFRAME;
Shell_NotifyIcon(NIM_DELETE, &nd); // 托盘图标不显示
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/LightBoat09/archive/2010/12/11/6069792.aspx
- MFC程序最小化到托盘
- MFC最小化程序到托盘
- MFC最小化程序到托盘
- MFC程序最小化到托盘
- MFC程序最小化到托盘
- MFC程序最小化到托盘
- MFC 程序最小化到任务栏托盘
- MFC程序启动时最小化到托盘
- MFC最小化到托盘
- MFC最小化到托盘
- MFC最小化到托盘
- 程序最小化到托盘
- 程序最小化到托盘
- MFC对话框最小化到托盘
- MFC对话框最小化到托盘
- MFC实现最小化到托盘
- MFC对话框最小化到托盘
- MFC窗口最小化到托盘
- 开始吧
- What is Facebook's architecture?
- vector基本操作|随机生成乱序字符串
- 算式计算器C++实现代码(顺序栈结构 增加了一些功能 比如三角函数 求指教)
- Linux 驱动开发人员所需要做的工作内容
- MFC程序最小化到托盘
- 银行家算法
- 为什么会这样
- VC连接SQL SERVER数据库
- Android 怎样画视图
- 不成功便成仁
- 只有一列的CListCtrl如何保证无横向滚动条
- 替代 Reflector 的工具-- ILSpy
- C++实验题目:判断三角形