MFC实现程序托盘
2016-03-12 15:14
288 查看
今天将程序托盘加入了正在开发的程序中,实现如下。
使程序托盘我们这里要用到了一个结构体NOTIFYICONDATA,它包含了系统需要用来传递托盘区域信息的消息;还有需要用到一个函数Shell_NotifyIcon,它的作用是对拖盘图标进行显示与删除。
现在开始实现,首先定义NOTIFYICONDATA,在OnInitDialog对其初始化。
自定义消息供NOTIFYICONDATA结构使用。
最后在OnDestroy函数删除托盘图标。
使程序托盘我们这里要用到了一个结构体NOTIFYICONDATA,它包含了系统需要用来传递托盘区域信息的消息;还有需要用到一个函数Shell_NotifyIcon,它的作用是对拖盘图标进行显示与删除。
STRUCT NOTIFLYICONDATA { cbSize //结构体的大小,以字节为单位 hIcon //任务栏上显示的图标 hWnd //窗口句柄 uCallbackMessage //自义定消息处理,当你对托管图标操作时,响应这消息 uFlags //作用标识,比如你想让图标起作用可以用NIF_ICON ,想显示提标信息可用NIF_TIP uID //图标ID szTip //鼠标放上去的提示信息 }; BOOL Shell_NotifyIcon( DWORD dwMessage,PNOTIFYICONDATA lpdata);/**dwMessage:执行的操作,可选参数为:NIM_ADD(创建托管图标,NIM_DELETE(删除托管图标),NIM_MODIFY(修改托管图标)**/
现在开始实现,首先定义NOTIFYICONDATA,在OnInitDialog对其初始化。
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(nid.szTip, _T("xxx"));//信息提示条 Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
自定义消息供NOTIFYICONDATA结构使用。
#define WM_SHOWTASK (WM_USER + 100) afx_msg LRESULT OnShowTask(WPARAM wParam,LPARAM lParam); LRESULT CQueueServerDlg::OnShowTask(WPARAM wParam,LPARAM lParam) //wParam是图标的ID,lParam是鼠标的行为 { if(wParam != IDR_MAINFRAME) { return 1; } switch(lParam) { case WM_RBUTTONUP://右键起来时弹出快捷菜单 { LPPOINT lpoint=new tagPOINT; ::GetCursorPos(lpoint);//得到鼠标位置 CMenu menu; menu.CreatePopupMenu();//声明一个弹出式菜单 menu.AppendMenu(MF_STRING,WM_DESTROY, "Close"); //增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已隐藏)将程序结束。 SetForegroundWindow(); 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); } break; case WM_LBUTTONDOWN: this-> ShowWindow(SW_SHOW); break; } return 0; }
最后在OnDestroy函数删除托盘图标。
Shell_NotifyIcon(NIM_DELETE,&nid);
相关文章推荐
- iOS 时间,日期,字符串的处理
- 智能推荐系统
- Android四大组件之 Activity
- hihoCoder #1039 : 字符消除
- Android数据库升级总结
- js 九九乘法表
- 振兴中华(又见递归搜索)
- MongoDB 的优点
- BeagleBone Black开发记录一:SDK安装
- 分解质因数
- 搭建Pxe服务器无人听应答全自动安装SLES11 SP3系统
- 大数据平台基础架构和常用处理工具
- js对象定义,表格数据转成json上传提交
- 使用GridViewWithHeaderAndFooter为gridView添加页头的方法
- STM32串口中断接收和中断发送
- Kotlin Android入门学习一
- 七大排序算法总结 JavaScript <堆还没写…………待续>
- event 事件 键盘控制div移动
- event 事件 keyCode
- CSS - 常用行、块级元素都有哪些?