MFC使用NOTIFYICONDATA将程序隐藏到托盘区
来源:互联网 发布:华润置地 知乎 面试 编辑:程序博客网 时间:2024/05/19 04:07
借鉴:http://blog.csdn.net/heaven13483/article/details/9748231
http://blog.csdn.net/dszgf5717/article/details/8864458
一、自定义信息
在头文件中加入下面这句话:
#define WM_SHOWTASK (WM_USER + 1)
二、在*DLG.CPP文件中添加添加消息映射
ON_MESSAGE(WM_SHOWTASK,OnShowTask)将此段消息放在
BEGIN_MESSAGE_MAP(CVS2005SmartMemoDlg, CDialog)END_MESSAGE_MAP()
中间
三、创建缩放函数ToTray()
void CVS2005SmartMemoDlg::ToTray(){NOTIFYICONDATA nid; nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); nid.hWnd = AfxGetMainWnd()->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(nid.szTip, "程序名称"); //信息提示条 Shell_NotifyIcon(NIM_ADD, &nid); //在托盘区添加图标 ShowWindow(SW_HIDE); //隐藏主窗口}四、创建信息处理函数OnShowTask
//wParam接收的是图标的ID,而lParam接收的是鼠标的行为
HRESULT CVS2005SmartMemoDlg::OnShowTask(WPARAM wParam, LPARAM lParam){if(wParam != IDR_MAINFRAME) return 1; switch(lParam) {case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭” { LPPOINT lpoint=new tagPOINT; ::GetCursorPos(lpoint);//得到鼠标位置 CMenu menu; menu.CreatePopupMenu();//声明一个弹出式菜单if(IsStartKeyExist()){menu.AppendMenu(MF_STRING, ID_SET_START, "取消开机启动");}else{menu.AppendMenu(MF_STRING, ID_SET_START, "设置开机启动");}//增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已隐藏),将程序结束。 menu.AppendMenu(MF_STRING, WM_DESTROY, "退出"); //确定弹出式菜单的位置SetForegroundWindow(); //此句需要置于TrackPopupMenu之前,当点击按钮外的地方,菜单消失menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x, lpoint->y, this); //资源回收HMENU hmenu = menu.Detach(); menu.DestroyMenu(); delete lpoint;}break;case WM_LBUTTONDBLCLK://双击左键的处理 {this->ShowWindow(SW_SHOW);//简单的显示主窗口DeleteTray();}break; default: break; } return 0;}
五、创建关闭程序函数DeleteTray()
void CVS2005SmartMemoDlg::ToTray(){NOTIFYICONDATA nid; nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); nid.hWnd = AfxGetMainWnd()->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(nid.szTip, "程序名称"); //信息提示条 Shell_NotifyIcon(NIM_ADD, &nid); //在托盘区添加图标 ShowWindow(SW_HIDE); //隐藏主窗口}
0 0
- MFC使用NOTIFYICONDATA将程序隐藏到托盘区
- 利用"NOTIFYICONDATA"实现MFC的托盘程序
- 利用"NOTIFYICONDATA"实现MFC的托盘程序
- 利用"NOTIFYICONDATA"实现MFC的托盘程序
- MFC程序隐藏于托盘
- MFC 将程序缩小托盘
- MFC程序最小化到托盘
- MFC最小化程序到托盘
- MFC最小化程序到托盘
- MFC程序最小化到托盘
- MFC程序最小化到托盘
- MFC程序最小化到托盘
- 托盘区图标操作(NOTIFYICONDATA)
- MFC将窗口最小化到托盘
- MFC将窗口最小化到托盘
- MFC程序最小化到托盘区(待实践)
- MFC 程序最小化到任务栏托盘
- MFC程序启动时最小化到托盘
- HealthKit开发快速入门教程之HealthKit开发概述简介
- css 渐变底色
- javascript中的arguments
- Eclipse中访问localhost出现404错误,解决办法
- 运维前景
- MFC使用NOTIFYICONDATA将程序隐藏到托盘区
- 内存数据库服务运营之路
- Android Animation-list 逐帧动画
- devexpress xtraReport 汉化功能
- Git学习笔记(三)
- Android Adapte中getItemViewType越界问题
- JAVA常用方法
- c# Use a lambda expression to define an event handler
- 网络编程长链接和短链接