Windows系统托盘
_NOIFYICONDATA结构体
//系统定义的结构体
typedef struct _NOTIFYICONDATA{DWORD cbSize;//以字节为单位的结构体大小HWND hWnd;//接收托盘图标通知消息的窗口句柄UINT uID;//应用程序定义的图标ID号UINT uFlags;//图标属性UINT uCallbackMessages;//应用程序定义的消息ID,传递给hWndHICON hIcon;//图标句柄char szTip[64];//鼠标停留提示信息
}NOTIFYICONDATA,*PNOTIFYICONDATA;
/*在该结构中uFlags可以是下列之一或组合:NIF_ICON 设置成员hIcon有效NIF_MESSAGE设置成员uCallbackMessage有效NIF_TIP设置成员szTip有效
*/
Shell_NotifyIcon函数
用于在托盘上增加、删除或修改图标
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(DWORD dwMessage,PNOTIFYICONDATA pnid);
/*pnid是NOTIFYICONDATA结构的指针dwMessage是被传递的消息:NIM_ADD增加图标NIM_DELETE删除图标NIM_MODIFY修改图标
*/
生成托盘
NOTIFYICONDATA m_tnid;#define MYWM_NOTIFYICON WM_USER+1//OnCreate 函数中return 之前添加托盘生成代码m_tnid.cbSize=sizeof(NOTIFYICONDATA); m_tnid.hWnd=this->m_hWnd; m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;m_tnid.uCallbackMessage=MYWM_NOTIFYICON; //用户定义的回调消息 CString szToolTip; szToolTip=_T("托盘图标实例"); //鼠标在托盘上移动时显示文本_tcscpy(m_tnid.szTip, szToolTip); m_tnid.uID=IDR_MAINFRAME; HICON hIcon; hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);m_tnid.hIcon=hIcon; ::Shell_NotifyIcon(NIM_ADD,&m_tnid); if(hIcon)::DestroyIcon(hIcon);
响应托盘消息
LRESULT CMainFrame::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam){switch(uMsg){case WM_SHOWTASK:{if( lParam == WM_LBUTTONDBLCLK ){Shell_NotifyIcon(NIM_DELETE, &m_nid);//删除托盘图标ShowWindow(SW_SHOWNORMAL);}else if( lParam == WM_RBUTTONDOWN ){//如果在图标中单击右键则弹出声明式菜单POINT pt; GetCursorPos(&pt);//获取鼠标坐标 SetForegroundWindow(m_hWnd); //右击后点别地可以清除“右击出来的菜单”HMENU hMenu; //托盘菜单 win32程序使用的是HMENU,如果是MFC程序可以使用CMenuhMenu = CreatePopupMenu();//生成托盘菜单AppendMenu(hMenu, MF_STRING, WM_ONCLOSE, _T("退出")); int cmd = TrackPopupMenu(hMenu, TPM_RETURNCMD, pt.x, pt.y, NULL, m_hWnd, NULL); if(cmd == WM_ONCLOSE) {//退出程序m_nid.hIcon = NULL;Shell_NotifyIcon(NIM_DELETE, &m_nid);::PostQuitMessage(0);}}}break;default:break;return __super::HandleMessage(uMsg,wParam,lParam);
}
Windows系统托盘相关推荐
- 创建windows系统托盘应用程序
#include <windows.h>#define IDR_PAUSE 12 #define IDR_START 13 LPCTSTR szAppClassName = TEXT(&q ...
- windows系统托盘tray
electron tray是一种方法. Add icons and context menus to the system's notification area. python调用win32api也 ...
- windows系统托盘及托盘菜单
window系统托盘及托盘菜单 下面是一个MFC写的wifi助手程序用于实现系统托盘的代码片段 void CWiFiAssistantDlg::OnClose() { // TODO: 在此添加消息 ...
- Windows下QT实现托盘程序及系统托盘刷新
目录 一.现象 二.托盘程序的QT实现 1.功能说明 2.使用的类 3.代码实现 三.windows系统托盘刷新 1.托盘刷新代码 2.托盘刷新代码的调用 一.现象 windows下当程序关闭,有时系 ...
- 20190703 windows 右下角系统托盘直接显示电量数字百分比
电池电量在系统托盘显示 用 windows 平板的时候经常会遇到这样的情况,由于右下角系统托盘显示的电量图标不能清晰反馈出当前电量,所以每次都用用手指点一下电量图标来看具体电量,操作贼麻烦.况且手指粗 ...
- 将Windows Live Mail最小化到Windows 7中的系统托盘
Are you frustrated that you can not minimize Windows Live Mail to the system tray in Windows 7? With ...
- 且看电脑高手如何优雅的使用windows系统
有人问道: 我从 08 年的 MacBook 到现在的 MacBook Air,用 Mac 也有4年多了.苹果系统的优雅给人良好的体验,但是在单位和其他场合不可避免的要回归 Windows,请问有哪些 ...
- java对托盘加监听右击报错_java实现系统托盘示例
桌面的系统托盘即当程序最小化或者关闭按钮程序并没有退出,而是最小化在任务状态区域(Windows系统),当鼠标点击那个区域所在的图标有提示以及其他的操作.在 Microsoft Windows 上,它 ...
- 刷新系统托盘(清除死掉的图标)修正版
刷新系统托盘(清除死掉的图标)修正版 2009-08-06 18:50:06| 分类: Delphi | 标签: |字号大中小 订阅 type TOSVersion = (osUnknown, ...
最新文章
- input type=file /,美化自定义上传按钮
- [Effective JavaScript 笔记]第29条:避免使用非标准的栈检查属性
- 《四世同堂》金句摘抄(四)
- Java Web学习总结(34)——拦截器和过滤器的差异总结
- 佳能MP259打印重影的问题始终无法得到彻底解决,今天终于找到方法了
- Qt QDataTime QString 两个类的使用
- [CMake] 头文件路径 动态库路径
- mysql 特殊字符集_特殊汉字“”引发的对于字符集的思考;mysql字符集;sqlalchemy字符集设置;客户端字符集设置;...
- Verilog入门2-用ise做38译码器和仿真
- matlab牛头刨床矩阵,MATLAB牛头刨床分析程序-课程设计
- easyUi combobox setValue 引起的关于js的坑
- 顺序存储二叉树和线索化二叉树
- libmudbus库使用的一二事
- 导览讲解 | 二维码语音讲解有什么优势?
- java实现生成二维码
- PLM,是一个英文缩写,有2个含义,一是表示产品生命周期管理(product lifecycle management,PLM),...
- VScode+keil插件-取代keil开发不要太爽了
- python甲骨文培训
- Ubuntu18状态栏调整位置,放置在屏幕下方
- electron-vue 引入electron-updater提示unexpected token
热门文章
- kafka --org.apache.kafka.common.config.ConfigException: No resolvable bootstrap urls given in bootst
- DolphinScheduler 邮件告警设置
- Qt Quick 之 PathView 详解
- Reabble – 出色的 Kindle RSS 在线阅读器
- python ios开发环境_程序员的macOS系列:Mac开发环境配置
- 贝叶斯分析好坏_贝叶斯估计对比于经典估计的优势分析与其局限性
- 有多少人用智能ABC,又有多少人知道这些!
- tpl怎么搞_TPL详解、使用
- Python数据可视化 Pyecharts 制作 Pie 饼状图
- 万卷书 - 快速写作 [Write Your Book in a Flash]