使用MFC实现WIN10的气泡提示

您所在的位置:网站首页 气泡消息 使用MFC实现WIN10的气泡提示

使用MFC实现WIN10的气泡提示

2024-06-10 02:43| 来源: 网络整理| 查看: 265

基本知识

首先介绍一下基本知识: 以下是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函数介绍



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3