MFC添加系统托盘图标
来源:互联网 发布:高达00剧场版结局知乎 编辑:程序博客网 时间:2024/05/02 02:54
先在dlg.cpp中定义两个宏
#include <Dbt.h>#define WM_SYSTEMTRAYWM_USER + 1 // 托盘图标消息绑定#define MY_BACKGROUNDER_DLGWM_USER + 2 // 后台运行按键消息
在dlg.h中添加变量
NOTIFYICONDATA m_nid;
NOTIFYICONDATA结构定义:(具体解释可自行百度)
typedef struct _NOTIFYICONDATA {DWORD cbSize; // 结构体的大小,以字节为单位。HWND hWnd; // 窗口的句柄UINT uID; // 应用程序定义的任务栏图标的标识符UINT uFlags;UINT uCallbackMessage; // 应用程序定义的消息标示HICON hIcon;// 增加、修改或删除的图标的句柄TCHAR szTip[64];// 指向一个以\0结束的字符串的指针。DWORD dwState; // 图标的状态DWORD dwStateMask;// 指明dwState成员的那些位可以被设置或者访问TCHAR szInfo[256];// 指向一个以\0结束的字符串的指针,字符串的内容为气球提示内容union {// 和uVersion成员为联合体。uTimeout表示气球提示超时的时间UINT uTimeout;UINT uVersion;};TCHAR szInfoTitle[64];// 指向一个以\0结束的字符串的指针。字符串的内容为气球提示的标题DWORD dwInfoFlags;// 设置此成员用来给气球提示框增加一个图标。GUID guidItem;} NOTIFYICONDATA, *PNOTIFYICONDATA;
在OnInitDialog()中初始化m_nid;
m_nid.cbSize = sizeof( NOTIFYICONDATA ); m_nid.hWnd = m_hWnd; m_nid.uID = IDR_MAINFRAME; m_nid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP; m_nid.uCallbackMessage = WM_SYSTEMTRAY; //自定义消息 m_nid.hIcon = m_hIcon; strcpy_s(m_nid.szTip, "U盘自动更新程序");
重写WindowProc函数;
LRESULT CUDiskDetectionDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam){// TODO: 在此添加专用代码和/或调用基类if (WM_SYSTEMTRAY == message){ShowSystemTrary(wParam, lParam);}else if (MY_BACKGROUNDER_DLG == message){::Shell_NotifyIcon(NIM_ADD, &m_nid); // 显示托盘图标。this->ShowWindow(FALSE); // 隐藏窗体}return CDialog::WindowProc(message, wParam, lParam);}
ShowSystemTrary函数:
BOOL CUDiskDetectionDlg::ShowSystemTrary(WPARAM wParam, LPARAM lParam){if (lParam == WM_LBUTTONDBLCLK){ ShowWindow(SW_SHOWNORMAL); // 用最近的大小和位置显示::Shell_NotifyIcon(NIM_DELETE, &m_nid);}if (lParam == WM_RBUTTONDOWN){ //右击弹出托盘菜单CMenu menu;menu.LoadMenu(IDR_MENU_QUIT);CMenu *pPopUp=menu.GetSubMenu(0);CPoint pt; GetCursorPos(&pt); SetForegroundWindow(); pPopUp->TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y,this); }return 0;}
后台运行按键加入代码:
SendMessage(MY_BACKGROUNDER_DLG);增加的退出菜单增加代码:
SendMessage(WM_CLOSE); ::Shell_NotifyIcon(NIM_DELETE, &m_nid);
- MFC 添加系统托盘图标
- MFC添加系统托盘图标
- MFC将程序添加到系统图标栏,系统托盘栏
- 添加系统托盘图标
- 添加系统托盘图标
- JavaFx 添加系统托盘图标
- [MFC]系统托盘操作类,图标,气泡等
- API实现添加系统托盘图标及其菜单
- 为自己的应用程序添加系统托盘图标
- FLEX AIR添加系统托盘图标步骤
- MFC菜单添加图标
- mfc Ribbon 添加图标
- MFC菜单添加图标
- 系统托盘图标
- 系统托盘图标
- Mfc系统托盘
- MFC---系统托盘
- MFC 系统托盘图标实现,包括双击图标和右键图标菜单
- 云存储性能与有效性分析
- CSS实现兼容性的渐变背景(gradient)效果
- Problem C. Sorting- 分组后 快速排序
- 比较详细的ffmpeg参数功能
- Java中Collections与Arrays的排序解析
- MFC添加系统托盘图标
- HDFS+MapReduce+Hive+HBase十分钟快速入门
- paip.提升用户体验------c++ Qt5 实现程序图标以及动态托盘闪烁图标
- 解决Eclipse C/C++中"Unresolved inclusion" 的错误提示
- 【Mysql】shell运行mysql的sql语句
- android手把手教你开发launcher(一)(AndroidStudio版)
- 可以让你少奋斗10年的工作经验
- ubuntu 13.04无线网无法使用解决方法
- suse 机器 userdel 执行失败