添加、移除托盘图标以及气泡提示
2017-07-09 23:54
423 查看
添加、移除托盘图标以及气泡提示
在头文件中声明NOTIFYICONDATA类型的m_tray结构,然后再类向导中添加WM_NOTIFYICON消息的处理函数,使用 Shell_NotifyIcon 操作托盘图标。.h
public: BOOL AddRemoveTray(BOOL flag); NOTIFYICONDATA m_tray; BOOL ShowBubbleTip(LPCTSTR lpTitle, LPCTSTR lpText, DWORD infoflags); // 实现 protected: HICON m_hIcon; // 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg LRESULT OnNotifyicon(WPARAM wParam, LPARAM lParam);
.cpp
BEGIN_MESSAGE_MAP(CTrayAndBubbleDlg, CDialogEx) ON_WM_PAINT() ON_MESSAGE(WM_NOTIFYICON, &CTrayAndBubbleDlg::OnNotifyicon) ON_WM_QUERYDRAGICON() END_MESSAGE_MAP() // CTrayAndBubbleDlg 消息处理程序 BOOL CTrayAndBubbleDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 AddRemoveTray(TRUE); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } BOOL CTrayAndBubbleDlg::AddRemoveTray(BOOL flag) { if (flag) { //static const GUID ic_guid = { 0x84d049ff, 0xb769, 0x434e, { 0x9f, 0x53, 0xbc, 0xf2, 0x98, 0x48, 0x25, 0xa9 } }; // ZeroMemory(&m_tray,sizeof(m_tray)); m_tray.cbSize = sizeof(NOTIFYICONDATA); m_tray.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON1)); // (HICON)LoadImage(AfxGetInstanceHandle(),IDI_TRAY_ICON,IMAGE_ICON,0,0,LR_LOADFROMFILE);; m_tray.hWnd = m_hWnd; StringCchCopy(m_tray.szTip, sizeof(m_tray.szTip), _T("Test application")); m_tray.uCallbackMessage = WM_NOTIFYICON; m_tray.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; m_tray.uID = IDI_ICON1; //m_tray.uFlags |= NIF_GUID; //m_tray.guidItem = ic_guid; int count = 30; while (count > 0) { if (Shell_NotifyIcon(NIM_ADD, &m_tray) == FALSE)//添加 { Shell_NotifyIcon(NIM_DELETE, &m_tray); Sleep(100); count--; continue; } else return TRUE; } return FALSE; } else {//remove int count = 10; while (count > 0) { if (Shell_NotifyIcon(NIM_DELETE, &m_tray) == FALSE)//移除 { Sleep(50); count--; continue; } else return TRUE; } return FALSE; } } BOOL CTrayAndBubbleDlg::ShowBubbleTip(LPCTSTR lpTitle, LPCTSTR lpText, DWORD infoflags)//气泡 { m_tray.cbSize = sizeof(NOTIFYICONDATA); m_tray.uFlags |= NIF_INFO; m_tray.uTimeout = 10 * 1000; m_tray.dwInfoFlags = infoflags; m_tray.uVersion = NOTIFYICON_VERSION; StringCchCopy(m_tray.szInfoTitle, sizeof(m_tray.szTip), lpTitle); StringCchCopy(m_tray.szInfo, sizeof(m_tray.szTip), lpTitle); return Shell_NotifyIcon(NIM_MODIFY, &m_tray); } afx_msg LRESULT CTrayAndBubbleDlg::OnNotifyicon(WPARAM wParam, LPARAM lParam) { UINT nID = (UINT)wParam; UINT uMouseMsg = (UINT)lParam; switch (nID) { case IDI_ICON1: { if (uMouseMsg == WM_RBUTTONDOWN)//退出 { AddRemoveTray(FALSE); exit(0); } else if (uMouseMsg == WM_LBUTTONDOWN)//显示气泡 { ShowBubbleTip(_T("ShowBubbleTip Title"), _T("ShowBubbleTip Context."), NIIF_INFO); } } break; default: return 0; } return 0; }
代码链接:
VS2015工程:http://download.csdn.net/detail/yangyang031213/9893384
相关文章推荐
- VS2010 MFC中在对话框上添加工具栏以及工具栏提示信息并改变图标支持256色
- c# winform notifyIcon 系统托盘图标闪动 气泡提示
- shellnotifyicon,托盘图标气泡提示问题
- C#之使用NotifyIcon实现任务栏托盘菜单,图标闪烁效果及气泡提示 很多程序是只需要后台运行的,甚至不需要自己的应用界面。NotifyIcon提供了程序在任务栏的显示功能 程序下载链接如下
- VC++ 添加托盘图标和气泡
- VS2008下使用MFC,做托盘以及气泡提示,shellapi.h的问题。。
- windows程序托盘图标以及消息提示--基本知识(NOTIFYICONDATA)
- windows程序托盘图标以及消息提示--基本知识(Shell_NotifyIcon)
- windows程序托盘图标以及消息提示--基本知识(NOTIFYICONDATA)
- [置顶] 带图标工具栏的创建以及提示功能的添加
- 【C#】关于右下角托盘图标以及气泡使用的注意事项
- 在托盘图标中添加气球提示
- 在托盘图标中添加气球提示
- windows程序托盘图标以及消息提示--示例程序
- 使用C++builder的TTrayIcon制作系统托盘动态图标和气泡提示
- 用VB实现托盘图标+气泡提示的效果
- windows程序托盘图标以及消息提示--基本知识(Shell_NotifyIcon)
- windows程序托盘图标以及消息提示--示例程序
- 在托盘图标中添加气球提示
- 在托盘图标中添加气球提示