VC实现系统托盘程序
2010-07-06 21:34
302 查看
系统托盘主要用到一个Shell_NotifyIcon函数,一个NOTIFYICONDATA类型
说一下大概思路:1.先定义一个自定义消息ID;2.准备好一个图标,作为系统托盘图标;3.定义一个NOTIFYICONDATA类型(不能为局部变量,否则程序退出时无法删除图标)4.调用NotifyIcon函数显示系统托盘
创建一个基于对话框的程序
在对话框头文件中添加以下代码
在对话框类中添加变量
在对话框初始化函数中添加以下代码
至此已经完成了系统托盘的功能了,运行看看。但程序退出时,图标不会删除,在对话框类中添加WM_DESTORY消息,添加以下代码
现在再运行看看,退出时可以删除图标了
现在实现点击系统托盘图标时弹出消息框
在对话框类中添加自定义消息映射
添加函数定义
添加函数
这样就制作完成了,运行,点击程序的系统托盘图标,就会弹出消息框。也可以根据些方法制作其它功能,如右键菜单等。
说一下大概思路:1.先定义一个自定义消息ID;2.准备好一个图标,作为系统托盘图标;3.定义一个NOTIFYICONDATA类型(不能为局部变量,否则程序退出时无法删除图标)4.调用NotifyIcon函数显示系统托盘
创建一个基于对话框的程序
在对话框头文件中添加以下代码
#define WM_NOTIFYICON WM_USER+5 // 自定义消息ID #define IDI_ICON IDR_MAINFRAME // 系统托盘图标ID(用于管理图标)
在对话框类中添加变量
1 NOTIFYICONDATA m_NotfiyIconData;
在对话框初始化函数中添加以下代码
m_NotifyIconData.cbSize=sizeof(NOTIFYICONDATA); // 结构体的大小 m_NotifyIconData.hIcon=this->m_hIcon; // 图标句柄 m_NotifyIconData.hWnd=this->m_hWnd; // 窗口句柄 strcpy(m_NotifyIconData.szTip,"Hello World"); // 鼠标指向图标时所显示的消息 m_NotifyIconData.uFlags=NIF_MESSAGE|NIF_TIP|NIF_ICON; m_NotifyIconData.uID=IDI_ICON; // 图标ID(用于管理图标,也可以自定义) Shell_NotifyIcon(NIM_ADD,&m_NotifyIconData); // 显示图标
至此已经完成了系统托盘的功能了,运行看看。但程序退出时,图标不会删除,在对话框类中添加WM_DESTORY消息,添加以下代码
Shell_NotifyIcon(NIM_DELETE,&m_NotifyIconData); // 程序退出时删除图标
现在再运行看看,退出时可以删除图标了
现在实现点击系统托盘图标时弹出消息框
在对话框类中添加自定义消息映射
BEGIN_MESSAGE_MAP(CTestDlg, CDialog) //{{AFX_MSG_MAP(CTestDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_DESTROY() ON_MESSAGE(WM_NOTIFYICON, OnIconNotification) // ...... //}}AFX_MSG_MAP END_MESSAGE_MAP()
添加函数定义
BOOL OnIconNotification(WPARAM wParam,LPARAM lParam);
添加函数
BOOL CTestDlg::OnIconNotification(WPARAM wParam, LPARAM lParam) { if(wParam!=m_NotifyIconData.uID) // 不是自己的图标发来的消息,退出 return FALSE; switch(lParam) // 过滤消息 { case WM_LBUTTONDOWN: // 鼠标左键在图标按下 { AfxMessageBox("Hello World"); // 弹出消息框 } break; } return TRUE; }
这样就制作完成了,运行,点击程序的系统托盘图标,就会弹出消息框。也可以根据些方法制作其它功能,如右键菜单等。
相关文章推荐
- VC实现程序最小化到系统托盘功能
- VC 制作系统托盘程序实现将窗口最小化到系统托
- VC 制作系统托盘程序实现将窗口最小化到系统托盘
- VC++MFC对话框应用程序实现程序最小化到系统托盘
- VC中实现系统托盘程序
- VC 制作系统托盘程序实现将窗口最小化到系统托
- MFC中提示对话框的滑动弹出和程序图标加入系统托盘的实现
- VC编程制作系统托盘程序
- [转载]Win32 API 实现系统托盘程序
- C#窗体程序入门,实现3秒倒计时关闭显示器,实现系统托盘,右键菜单。
- VC制作系统托盘程序
- Win32 API 实现系统托盘程序
- 一个带系统托盘的VC++程序编写方法
- C#实现WinForm程序的动态系统托盘图标
- VC编程制作系统托盘程序
- vC++ 系统托盘图标实现
- VC实现系统热键激活后台服务程序
- VC++中实现程序启动后隐藏窗口,最小化到托盘图标。
- VC编程制作系统托盘程序
- VC++2005环境中实现程序托盘的代码