托盘图标的删除和托盘程序的优化

原创 2012年03月23日 14:07:34

上一篇讨论了托盘图标的添加,程序退出后虽然系统会自动删除托盘图标,但这种工作最好在程序中完成,以保证程序所有的动作都在我们的代码控制之内

3.删除托盘图标

    NOTIFYICONDATA nid;
    
    nid.cbSize = sizeof nid;
    nid.hWnd = GetSafeHwnd();
    nid.uID = IDR_MAINFRAME;
    nid.uFlags = NIF_MESSAGE | NIF_ICON;
    Shell_NotifyIcon(NIM_DELETE,&nid);

这些代码与前一篇内容是相关的,理论上讲只要nid.hWnd、nid.uID与添加托盘图标时这两个成员变量的数值对应相等,删除图标就能成功

但事实上,由于我们删除图标时,程序正在退出,往往窗口已经销毁,不管是用GetSafeHwnd还是直接引用m_hWnd都得不到我们添加图标时所用的nid.hWnd的值了,所以上面的代码放在析构函数中最后调用总是失败的。

所以最佳的办法,还是将

NOTIFYICONDATA nid;
这个变量改写成成员变量
NOTIFYICONDATA m_nid;
这样要换图标或者删除图标,都很方便,不用重新定义临时的NOTIFYICON重新赋值。
照这种操作,在删除时,可以直接写这一句就行了:
Shell_NotifyIcon(NIM_DELETE,&m_nid);

相关文章推荐

XP/WIN7系统中删除残留托盘图标的方法

对于使用托盘图标的程序,当我们通过强制结束进程,或者程序异常退出时,托盘图标区域总会有托盘图标的残留,需要我们用鼠标移到残留区域时,托盘图标才会自动消失。有时我们需要去做相关的处理,比如在软件升级时,...

VC/MFC结束程序进程时删除程序系统托盘中的图标

丁丁:为什么我在自己写的程序里把某其他应用程序的进程TerminateProcess()了,这个被Over掉的程序在系统托盘中的图标木有消失捏。更奇怪的是,鼠标往系统托盘上一划,头屑不见了(广告词,图...

MFC 托盘中添加程序图标

因为转载的这篇文章的作者也是转载的,所以找不到原作者的URL,在此只做对自己的技术储备。 1、在资源中的Icon中导入一个自己喜欢的图标,ID命名为IDR_MAINFRAME,将先前的IDR...
  • lxp116
  • lxp116
  • 2013年11月22日 14:25
  • 1788

C#Windows 窗体设计-实现欢迎界面-显示About窗体-在托盘中写入应用程序图标

1. private void Form1_Load(object sender, EventArgs e) { //MessageBox.Show("将窗...

实现将程序图标显示在系统托盘

长久以来,一直很好奇类似QQ等软件的图标是如何显示在系统托盘的,这次有个项目正好用到,所以就研究了一下。具体方法如下:1、首先我们需要在工具栏找到NotifyIcon这个控件,找到后将其拖到Form中...

Java桌面应用程序创建系统托盘图标

/* *Created on 2016年12月8日 *Copyright 2016 Yong Cai Limited crop. All Rights Reserved * *72896**80@qq...

VC++设计托盘图标程序

在Windows操作系统中,任务栏的右边(托盘)会常驻几个图标,如输入法切换图标、音量控制图标等,此外我们还经常遇到具有托盘图标的软件,如金山词霸、实时监测功能的杀毒软件等。这些软件在后台运行,通常不...

C#实现WinForm程序的动态系统托盘图标

1.在主窗体中添加一个 NotifyIcon 控件-notifyIcon12.在主窗体中添加一个 ContextMenu 控件-contextMenu1,并添加菜单项3.设置 notifyIcon1 ...

WPF程序添加托盘图标,菜单的方法

前段时间做项目,客户需要程序最小化时到托盘,并添加托盘菜单,可以做退出,打开灯操作。 首先需要定义一个类。托盘菜单可用的。 using System; using System.Collect...
  • zx75991
  • zx75991
  • 2013年07月02日 11:00
  • 2205

C# 程序关闭托盘图标不会自动消失

调试winform程序的时候使用托盘图标遇到关闭了程序但是托盘图标并没有消失的情况,但是鼠标滑过图标就消失了,这样软件打开关闭次数多了会出现在托盘堆积大量图标的情况,开始以为是操作系统刷新问题,后来使...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:托盘图标的删除和托盘程序的优化
举报原因:
原因补充:

(最多只允许输入30个字)