windows托盘程序和泡泡提示简单攻略
来源:互联网 发布:毒品网络百度云 编辑:程序博客网 时间:2024/05/01 12:24
很多初学MFC的人对于系统托盘程序和泡泡提示很好奇,但却有种望而生畏的感觉,其实只需要以下3个函数和一个自定义消息和消息处理函数就够了.
我们先来认识一下这几个函数
BOOL AddToTray();//添加托盘图标
void RemoveFromTray();//移除托盘图标
BOOL ShowBalloonTip(LPCTSTR szMsg,LPCTSTR szTitle,
UINT uTimeout, DWORD dwInfoFlags);//显示泡泡提示
#define WM_TRAYMENU WM_USER+3001//自定义消息
ON_MESSAGE(WM_TRAYMENU,OnTrayMenu)//消息处理
afx_msg void OnTrayMenu(WPARAM wParam,LPARAM lParam);//消息处理函数
这几个函数都是在MFC 主框架类中定义的:
- BOOL CMainFrame::AddToTray()//初始化主框架时调用
- {
- nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);//NOTIFYICONDATA nid;
- // NOTIFYICONDATA结构请参考MSDN
- nid.hWnd=this->m_hWnd;
- nid.uID=IDR_MAINFRAME;
- nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
- nid.uCallbackMessage=WM_TRAYMENU;//消息名
- nid.hIcon=LoadIcon(AfxGetInstanceHandle(),
- MAKEINTRESOURCE(IDR_MAINFRAME));
- sprintf(nid.szTip,"我的程序名");
- Shell_NotifyIcon(NIM_ADD,&nid);//添加托盘图标
- return TRUE;
- }
- void CMainFrame::RemoveFromTray()//在销毁的时候调用,
- //否则程序意外退出后需要鼠标移上去托盘图标才会消失
- {
- nid.uFlags = 0;
- Shell_NotifyIcon(NIM_DELETE, &nid);//移除托盘图标
- }
- /*例如:ShowBalloonTip("欢迎登录","我的程序名",4000,NIIF_INFO);*/
- BOOL CMainFrame::ShowBalloonTip(LPCTSTR szMsg,LPCTSTR szTitle, UINT uTimeout, DWORD dwInfoFlags)
- {
- nid.cbSize=sizeof(NOTIFYICONDATA);
- nid.uFlags = NIF_INFO;//提示类型 ,用于显示泡泡左上方不同图标,
- //另外还有NIIF_ERROR等
- nid.uTimeout = uTimeout;//提示时间
- nid.dwInfoFlags = dwInfoFlags;
- strcpy(nid.szInfo,szMsg ? szMsg : _T(""));//提示信息
- strcpy(nid.szInfoTitle,szTitle ? szTitle : _T(""));//提示标题
- return Shell_NotifyIcon(NIM_MODIFY, &nid);
- }
- /*响应在托盘上的动作*/
- void CMainFrame::OnTrayMenu(WPARAM wParam,LPARAM lParam)
- {
- if(wParam!=IDR_MAINFRAME)
- return ;
- switch(lParam)
- {
- case WM_RBUTTONUP://右键起来时弹出快捷菜单
- {
- POINT point;
- ::GetCursorPos(&point);//得到鼠标位置
- CMenu menu;
- menu.LoadMenu(IDR_MENU_TRAY);//你的菜单资源
- CMenu* file_menu = menu.GetSubMenu(0);
- ASSERT(file_menu);
- this->SetForegroundWindow();
- file_menu->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, point.x,
- point.y, this);
- menu.DestroyMenu();//资源回收
- }
- break;
- case WM_LBUTTONUP://单击左键的处理
- {
- ShowWindow(SW_SHOW);//简单的显示主窗口,为了使托盘程序比较专业,
- //最小化时进行了ShowWindow(SW_HIDE);
- }
- break;
- }
- }
将这3个函数在你的MainFrame.h 和.cpp中定义,声明WM_TRAYMENU并添加定义消息处理函数然后在初始化主框架时调用AddToTray(),销毁的时候调用RemoveFromTray(),需要提示的时候调用ShowBalloonTip(...)。
补充一下:泡泡提示需要IE5以上的支持,也就是说,你的程序必须运行于高于或等于IE5版本的Windows系统上;
相应的你的开发包也应该使用支持IE5以上的SDK,如果你是使用的是VC6,那很可能需要安装一个sdk如xp sp2 sdk
这个可以在很多地方下载到,安装好后记得把include目录所在位置加到你的vc6的搜索路径中,而且需要排到首位。
如:E:/XP_SDK_SP2/INCLUDE
(完)
- windows托盘程序和泡泡提示简单攻略
- windows托盘程序和泡泡提示简单攻略
- windows程序托盘图标以及消息提示--示例程序
- windows程序托盘图标以及消息提示--示例程序
- windows程序托盘图标以及消息提示--基本知识(NOTIFYICONDATA)
- windows程序托盘图标以及消息提示--基本知识(Shell_NotifyIcon)
- Windows托盘程序实现
- java托盘提示小程序
- c# 做 windows 托盘程序
- swt 简单的托盘程序
- C# 窗口实现Win7简单屏幕泡泡保护程序 和实现聊天窗口震动
- delphi编写windows服务程序,含托盘
- 托盘程序如何控制windows服务
- 托盘程序如何控制windows服务
- VC托盘程序的简单实现
- VC托盘程序的简单实现
- VC托盘程序的简单实现
- VC托盘程序的简单实现
- 如何建立有效的CRM(客户关系管理)系统
- java的alert操作
- 美国高中毕业生必须知道的100个单词,你知道几个?
- Excel函数使用——求方差(Var或VarP)
- FIELD SYMBOL动态分配的使用
- windows托盘程序和泡泡提示简单攻略
- bfin-xxx-gcc-4.3.1中config.status的生成及运行(5):参数判断
- 北京CMMB信号ESG的ServicePara部分的XML数据文件--8月份数据
- 时间同步服务器
- 使用 CInternetSession 封装多线程 http 文件下载
- 基于GSM的无线智能监控设计
- 前世修行500年,换来今生擦肩而过
- 基于PCI总线和DSP芯片的图像处理平台的硬件设计
- 1.3《ArcGIS Engine简介》(1.3.1部分)