基本知识

首先介绍一下基本知识:
以下是NOTIFYICONDATA结构体,以及他们分别的含义。

/***该系统需要处理的任务栏状态区的消息***/
typedef struct _NOTIFYICONDATA {  DWORD cbSize;        //结构体的大小,以字节为单位  HWND hWnd;           //窗口的句柄  UINT uID;            //应用程序定义的任务栏图标的标识符  UINT uFlags;         //此成员表明具体哪些其他成员为合法数据  UINT uCallbackMessage;   //应用程序定++义的消息标示  HICON hIcon;         //增加、修改或删除的图标的句柄  TCHAR szTip[64];     //指向一个以/0结束的字符串的指针  DWORD dwState;       //Version 5.0,图标的状态  DWORD dwStateMask;   //Version 5.0. 指明dwState成员的那些位可以被设置或者访问  TCHAR szInfo[256];   //指向一个以/0结束的字符串的指针,字符串的内容为气球提示内容  union {  UINT uTimeout;   //表示气球提示超时的时间,单位为毫秒,此时间后气球提示将消失  UINT uVersion;   //用来设置使用Windows 95 还是 Windows 2000风格的图标消息接口  };  TCHAR szInfoTitle[64];   //指向一个以/0结束的字符串的指针。字符串的内容为气球提示的标题  DWORD dwInfoFlags;   //设置此成员用来给气球提示框增加一个图标,增加的图标出现在气球提示标题的左侧  GUID guidItem;       //保留  HICON hBalloonIcon;  //用于Windows Vista或更高版本的自定义气球图标
} NOTIFYICONDATA, *PNOTIFYICONDATA;
————————————————
版权声明:本文为CSDN博主「一定要顶上去」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jhfyuf/article/details/83889749

以下是对结构体的简单赋值方法

         nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);  nid.hWnd=this->m_hWnd;  nid.uID=IDR_MAINFRAME;  nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP|NIF_INFO;  nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称,注意:这里的消息是用户自定义消息  nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));  wcscpy_s(nid.szTip,_T("VC系统托盘程序"));//信息提示条为"计划任务提醒"  wcscpy_s(nid.szInfo,_T("标题"));  wcscpy_s(nid.szInfoTitle,_T("内容"));  nid.dwInfoFlags=NIIF_INFO;  nid.uTimeout=5000;
————————————————
版权声明:本文为CSDN博主「一定要顶上去」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jhfyuf/article/details/83889749

实现步骤

注意:此时已经完成mfc工程的创建,并添加了一个测试按钮。如下图:

第一步

1、添加Shellapi.h头文件,
2、添加两个全局变量,NOTIFYICONDATA nid和BOOL isNotify。nid纪录窗口的信息,逻辑变量是为了判断托盘是否已经出现。
注意:NOTIFYICONDATA结构体已经在头文件Shellapi.h中声明过了,无需再次声明,只要在使用过程中包含该头文件即可。

NOTIFYICONDATA nid;
BOOL isNotify;

在对话框的初始化OnInitDialog函数中为isNotify初始化。

isNotify=false;

第二步

头文件上面添加#define WM_SHOWTASK (WM_USER+n),注意n>100以上。

#define WM_SHOWTASK (WM_USER+n) //注意n换成数字,n的大小应大于100

第三步

实现弹出气泡的功能。
其中:OnBnClickedButton1是按键控件的名字,CqipaonewDlg是类的名字。
首先为nid赋值,
然后调用Shell_NotifyIcon(NIM_ADD,&nid)函数实现气泡的弹出与消失。
NIM_ADD:添加弹框
NIM_MODIFY:修改弹框
NIM_DELETE:删除弹框

void CqipaonewDlg::OnBnClickedButton1()
{  // TODO: 在此添加控件通知处理程序代码   if (!isNotify)  {  nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);  nid.hWnd=this->m_hWnd;  nid.uID=IDR_MAINFRAME;  nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP|NIF_INFO;  nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称,注意:这里的消息是用户自定义消息  nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));  wcscpy_s(nid.szTip,_T("VC系统托盘程序"));//信息提示条为"计划任务提醒"  wcscpy_s(nid.szInfo,_T("标题"));  wcscpy_s(nid.szInfoTitle,_T("内容"));  nid.dwInfoFlags=NIIF_INFO;  nid.uTimeout=5000;        Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标  }  //AnimateWindow(1000,AW_HIDE|AW_BLEND);      //可以缓慢消失窗口  // KillTimer(0);  //ShowWindow(SW_HIDE);//隐藏主窗口
}
————————————————
版权声明:本文为CSDN博主「一定要顶上去」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jhfyuf/article/details/83889749

实现效果


参考网址
VC 系统托盘 气泡提示

Shell_NotifyIcon函数介绍

使用MFC实现WIN10的气泡提示相关推荐

  1. Arc Engine 中添加气泡提示框

    一.在ArcMap中的定位操作 已知若干点的经纬度坐标,要求在地图中进行定位: 1.通过Tool >Add X Y data 定位点,注意选择地理坐标系下的wgs 1984坐标系: 2.定位后的 ...

  2. java 气泡_Java气泡提示功能实现

    一个用Swing实现的java气泡提示效果. 运行效果如下图: package org.loon.swing.display; import java.awt.BorderLayout; import ...

  3. 计算机无法安装win10,win10系统电脑提示“windows安装无法继续”的还原步骤

    win10系统使用久了,好多网友反馈说win10系统电脑提示"windows安装无法继续"怎么办的问题,非常不方便.有什么办法可以永久解决win10系统电脑提示"wind ...

  4. MFC的exe启动时提示应用程序配置不正确,应用程序未能启动错误

    MFC的exe启动时提示应用程序配置不正确,应用程序未能启动错误 老姐笔记本中毒太深于病入膏肓,无奈迫写一程序"曲线救国".刚启动自己写的程序就出现应用程序配置不正确,应用程序未能 ...

  5. 数字气泡 php,vue指令如何实现气泡提示(附代码)

    本篇文章给大家带来的内容是关于vue指令如何实现气泡提示(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 菜鸟学习之路 //L6zt github 自己 在造组件轮子,也就是 ...

  6. VC中实现弹出CEdit的气泡提示框

    使用编辑框自带的气泡提示框,查看CEdit的源码能看到如下两个函数 AFX_INLINE BOOL CEdit::ShowBalloonTip(_In_z_ LPCWSTR lpszTitle, _I ...

  7. 计算机蓝屏代码0xc0000020,Win10运行程序提示“损坏的映像 错误0xc0000020”怎么解决?...

    Win10运行程序提示"损坏的映像 错误0xc0000020"怎么解决?很多用户在Win10系统下运行软件时,会出现损坏的映像提示框,内容显示为"C:\xx\xxx.dl ...

  8. java 气泡 提示插件_Java气泡提示功能实现

    Java气泡提示功能实现 package org.loon.swing.display; import java.awt.BorderLayout; import java.awt.Color; im ...

  9. 服务器开机提示修复,电脑开机提示自动修复怎么办?win10电脑开机提示自动修复教程...

    我们在使用电脑的时候,开机后一般都会进入桌面.但有时候打开电脑后提示自动修复,显示电脑未能正确启动.电脑开机提示自动修复怎么办?下面就让小编为大家带来win10电脑开机提示自动修复教程. 首先大家一定 ...

最新文章

  1. LogisticRegression_demo
  2. 【Netty】使用 Netty 开发 HTTP 服务器 ( HTTP 请求过滤 )
  3. javaScript Code 用javascript确定每月第二个星期五
  4. 诺基亚n73支持java_JAVA性能 vs 诺基亚N71、E61_诺基亚 N73_手机其它OS-中关村在线
  5. tomcat服务器配置优化
  6. 1.5封装数组之改进为泛型数组
  7. 2022大厂高频面试题之CSS篇
  8. wince怎么刷carplay_carplay wince安装版
  9. object类型转换为int类型
  10. vscode下载与安装,解决安装包下载慢问题
  11. Py正则表达式学习笔记:常用函数——单词检索、索引方法
  12. 【学习笔记】黑马程序员Java课程学习笔记(更新至第12章---集合)
  13. 仿射变换(Affine Transformation)原理及应用(1)
  14. android activity 旋转,Android 设定横屏,禁止屏幕旋转,Activity重置
  15. 奋斗者——一个高级咨询师是怎样炼成的
  16. Selection dont contain a main type
  17. 数字ic设计流程以及相关工具
  18. 1、计算机毕业设计论文分析-班主任管理系统
  19. KBL410-ASEMI整流桥,KBL410规格书,KBL410机械数据
  20. MediaPlayer( 媒体播放器),TelephonyManager(电话管理类),MediaRecorder(媒体录音机)

热门文章

  1. 品优购项目学习记录--01公共模块制作
  2. 抖音视频号情感类短视频爆火,背后有什么特点?有什么值得借鉴
  3. php jsp js,jsp和javascript的区别是什么
  4. 带有缓冲区的流 Buffer
  5. vue安装初始化项目
  6. 对句子分词,找到对应词的腾讯词向量模型并使用Python进行faiss检索
  7. 常见图片格式归纳总结
  8. 深入学习Gremlin(22):遍历终止terminal
  9. 正确使用计算机键盘的方法是,电脑键盘的正确保养方式
  10. Python实现索伯尔算子