c++如何设置托盘图标并闪烁

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

首先要用到头文件

#include"shellapi.h"

然后,定义一个托盘对象

NOTIFYICONDATA nid = { 0 };//托盘图标

接着,我们需要填充里面的值

nid.cbSize = sizeof(NOTIFYICONDATA);//长度
 nid.hWnd = hWnd;//窗口句柄
 nid.uID = IDI_SMALL;//图标的ID,这个在资源文件里面的Icon里面
 nid.hIcon = ::LoadIcon(hInst, MAKEINTRESOURCE(IDI_SMALL));//加载图标进去
 nid.uCallbackMessage = WM_NOTIFYICON;//这个是点击图标的事件消息,我们在消息处理函数WndProc()里面写一个case WM_NOTIFYICON:去处理鼠标点击图标事件
 nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;//图标样式
 _tcscpy(nid.szTip, _T("科学阅读器"));//当鼠标移动到图标的时候显示

这样我们就设置好了对象了。

接着,我们需要用到一个函数

Shell_NotifyIcon(NIM_ADD, &nid); //这个函数的意思就是告诉系统增加一个托盘图标,这时候,就可以看到右下角有图标了

为了要图标闪烁起来,我们需要一个定时器

SetTimer(hWnd, 1, 500, NULL);//第一个参数是窗口句柄,就是每500毫秒向窗口发送一个WM_TIMER的消息,第二个参数是计时器ID,第三个是时间,第四个为NULL。

全部都设置好了,接下来,就要在消息处理函数WndProc()里面去实现闪烁了:在全局定义一个bool型的变量。

case WM_TIMER://这是计时器发来的消息
  if (time == true){//time是我在全局定义的一个变量用来计算是更改正确的图标还是空图标的
   nid.hIcon =NULL;//当为空的时候,说明右下角已经有图标了,所以我要把图标设置为空,然后发送更改图标的信息给系统Shell_NotifyIcon(NIM_MODIFY, &nid);
   Shell_NotifyIcon(NIM_MODIFY, &nid);//更改托盘图标
   time = time-1;
  }
  else{//如果没有,我就要发送一个有图标的对象给系统
   nid.hIcon = ::LoadIcon(hInst, MAKEINTRESOURCE(IDI_SMALL));
   Shell_NotifyIcon(NIM_MODIFY, &nid);//更改托盘图标
   time = time + 1;
  }

最后,我们要来处理鼠标点击图标的事件

不要忘了把计时器关闭,否则,图标会一直闪烁,还有不要忘了去释放图标对象哦

 ShowWindow(hWnd, 10);//当然当点击后我们要把窗口显示出来。

KillTimer(hWnd, ID_TIMER);//第一参数是窗口句柄,第二个是计时器ID,就是关闭那个计时器










VC++托盘图标实现类封装及使用编程 在VC++中,我们经常需要在系统托盘区域显示一个图标,以提醒用户程序的状态或提供快捷操作。本文将介绍如何使用C++编程语言,在VC++中实现一个托盘图标的类,展示其使用方法。通过以上代码和说明,我们展示了如何使用C++编程语言在VC++中实现一个托盘图标的类,演示了其基本使用方法。首先,我们需要创建一个名为"TrayIcon"的类来封装托盘图标的相关功能。最后,我们清理资源,包括销毁新加载的图标句柄,返回程序结束。函数将托盘图标的显示图标更换为新加载的图标。类的构造函数,创建一个托盘图标 阅读详情

相关推荐

MFC应用中任务栏图标显示与闪烁功能实现

有时需要定义私有消息用于内部通信,尤其是在处理托盘回调时:// Resource.h 中定义// 启动定时器// 每500ms切换一次图标// 处理托盘鼠标事件时发送自定义消息break;break;return 0;通过这种方式,CMainFrame成为所有托盘事件的中枢处理器,统一调度界面响应逻辑。🧩 进阶技巧:使用创建全局唯一消息 ID,适用于跨进程通信场景。

weixin_42361478的博客 1025

VC++任务栏托盘图标程序

摘要:VC/C++源码,系统相关,托盘图标,足球比分即时 VC++任务栏托盘程序,且支持在托盘图标处点击鼠标右键,会弹出相应窗口或菜单,这里省去了菜单,只弹出了一个演示窗口。当窗口隐藏时,用鼠标左键点击窗口托盘上的图标。即程序最小化后会显示一个图标托盘处。 运行环境:Windows/Visual C/C++

VC++ 添加系统托盘图标及菜单

一个给程序添加托盘图标托盘菜单的小程序,只需要几行代码就可以自己定制一个系统托盘图标

Qt之自定义托盘(二)

鼠标右键在托盘区域点击右键,我们响应WM_RBUTTONUP消息,然后show出右键菜单,这个时候我们就需要做一件事情,必须保证我们自己显示的右键菜单在屏幕内,关于这个我问题,我也不多说,一切看代码,代码逻辑也比较简单,首先把菜单移动到鼠标右键点击的位置,然后判断鼠标鼠标是否在界面内,如果需要移动的话,水平移动就移动菜单的宽度,垂直方向就移动菜单的高度,具体怎么移动需要判断窗口的那个边出屏幕。文章看到这里,实现一个自定义的托盘逻辑基本上都走通了,剩下的就是qwidget的大量应用,还有界面美化工作啦。

hw5230的博客 804

c++实现系统托盘图标

 自从微软公司推出Windows 95操作系统以来,系统托盘应用作为一种极具吸引力的用户界面设计深受广大用户的喜爱。使用系统托盘作为用户界面的Windows应用程序数不胜数,比如"金山词霸"、"Winamp"、"RealPlayer"等等。这些程序运行时不显示运行窗口,只在任务栏上显示一个图标,表示程序正在运行,用户可以通过鼠标与应用程序交互,程序开发人员有时也需要编制一些仅在后台运行的类

YoYo's Blog 3722

Qt之QSystemTrayIcon(托盘图标)的使用(含源码+注释)

本文对托盘图标的细节操作未定义,对应的操作放在对应位置即可,其余的就是注意托盘使用的问题即可。友情提示——哪里看不懂可私哦,让我们一起互相进步吧注:文章为作者编程过程中所遇到的问题和总结,内容仅供参考,若有错误欢迎指出。注:如有侵权,请联系作者删除。

lw的博客 5165

paip.提升用户体验------c++ Qt5 实现程序图标以及动态托盘闪烁图标

paip.提升用户体验------c++ Qt5 实现程序图标以及动态托盘闪烁图标 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/attilax 1.应用程序图标:   ---------------------------- RC_ICONS = default.

attilax的专栏 4844

paip 提升用户体验------c++ Qt5 实现程序图标以及动态托盘闪烁图标

paip 提升用户体验------c++ Qt5 实现程序图标以及动态托盘闪烁图标

sdfhncfw的博客 271

托盘闪烁

<br />导读: <br />  相信对于QQ消息提示时,在任务栏闪烁的效果,大家肯定都见过,在网上找了些相关资料,发现用c#来实现这个效果非很难,只是使用了一个控件 NotifyIcon(因为不知道叫什么所以估且叫它任务栏托盘控件).因为没有对它进行深入学习,所以我只能简单的介绍下基本的用法,来实现闪烁的效果.(winform中) <br />  1.首先我们在空白窗体中拖入一个NotifyIcon控件和定时控件 <br />  private System.Windows.Forms.Notify

ulark的专栏 823

VC+MFC 托盘图标闪烁消息提示

用VC+MFC 实现托盘管理,支持热键,图标闪烁,右键菜单,消息框渐现等功能,所有功能均测试通过,请放心使用,欢迎关注!

linux托盘图标闪烁qt,Qt5 实现程序图标以及动态托盘闪烁图标

http://www.voidcn.com/article/p-goboshgv-zx.html作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax 1.应用程序图标: ---------------------------- RC_ICONS = default.i...

weixin_36354817的博客 412

C++ 最小化到托盘

C++程序添加最小化托盘功能 Shell_NotifyIcon

赤龙绕月的专栏 4400

托盘图标 java swing_atitit.系统托盘图标的设计java swing c# .net c++ js

atitit.系统托盘图标的实现javaswingc#.netc++js1.系统托盘图标的结构建立托盘图标,动态图标不断闪烁...这个走要用timer实现兰..带右键菜单(显示主界面,选项,关于本软件,关于作者,退出)tooltip加个定时监听,每到什么时候就提醒作者::老哇的爪子Attilax艾龙,EMAIL:1466519819@qq.com转载请注明来源:http:...

weixin_39591455的博客 170

2009-12-04 | 托盘 图标 闪烁

2009-12-04 | 托盘 图标 闪烁 转自http://shuiwxing3.blog.sohu.com/138683370.html void CExView::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default if (m_bIcon) { HICON

郭家佑VC/C++/C 1597

托盘图标闪烁

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33766168的博客 521

QT 让任务栏图标闪烁

真心不明白,国内有点难找关于这个操作,几乎都是围绕托盘闪烁,但这个项目中要求是任务栏图标闪烁。的确,任务栏闪烁比起托盘闪烁更加明显。 QApplication::alert(this);   https://blog.csdn.net/qq_34884729/article/details/80828031...

Think88666的博客 1727

[windows/C]托盘区中增删改自己的图标

参考:https://blog.csdn.net/sf9090/article/details/102640368 参考:https://www.cnblogs.com/duzouzhe/archive/2010/04/08/1707050.html 运行下面示例代码之前,需要先往资源文件里面导入任意两个.icon文件 /* * Shell_NotifyIcon的第一个参数 NIM_ADD 增加一个图标托盘区 NIM_DELETE 从托盘区删除一个图标 NIM_MODIFY 修改图标 NIM_

白浅星 541

Shell_NotifyIcon 修改托盘图标失败的问题

最近需要完成托盘图标闪烁的功能,但是一直没有达到效果,使用Shell_NotifyIcon 一直返回1460的错误。 后面找了很多资料发现问题;NOTIFYICONDATA结构只能在NIM_ADD里面定义一次,多次定义会导致修改托盘图标失败。 NOTIFYICONDATA m_nc;//定义在全局,只定义一次 void CFrameWnd::AddToTray() { m_nc.cbSiz

qingzai_的专栏 2788
上一篇: c++如何打开浏览器并制定网页
下一篇: c++的HTTP请求返回网页数据
vqt5_qt6
博客等级 码龄10年 702粉丝 427原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vqt5_qt6

你的鼓励是我们创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值