转载:https://www.zhaokeli.com/article/8266.html

温馨提示:技术类文章有它的时效性,请留意文章更新时间以及软件的版本

功能描述

实现点击关闭后,程序最小化到托盘中并显示图标,单击图标销毁图标并且显示窗口,右键弹出菜单退出,点击退出关闭程序

功能实现

使用托盘图标需要引入头文件  #include <ShellAPI.h>

先在窗口类中头文件中定义下面代码

 //定义托盘图标对象
NOTIFYICONDATA m_trayIcon;
//添加托盘图标(初始化)
void AddTrayIcon();
//处理托盘图标上的事件
LRESULT OnTrayIcon(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);

然后打开cpp文件定义实现

 void MainWnd::AddTrayIcon() {
memset(&m_trayIcon, , sizeof(NOTIFYICONDATA));
m_trayIcon.cbSize = sizeof(NOTIFYICONDATA);
m_trayIcon.hIcon = ::LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1));
m_trayIcon.hWnd = m_hWnd;
lstrcpy(m_trayIcon.szTip, _T("Msg"));
m_trayIcon.uCallbackMessage = WM_SHOWTASK;
m_trayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon(NIM_ADD, &m_trayIcon);
ShowWindow(SW_HIDE);
}
LRESULT MainWnd::OnTrayIcon(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & bHandled)
{
//如果在图标中单击左键则还原
if (lParam == WM_LBUTTONDOWN)
{
//删除托盘图标
Shell_NotifyIcon(NIM_DELETE, &m_trayIcon); //博主认为此处应注释掉
//显示主窗口
ShowWindow(SW_SHOWNORMAL);
}
//如果在图标中单击右键则弹出声明式菜单
if (lParam == WM_RBUTTONDOWN)
{
//获取鼠标坐标
POINT pt; GetCursorPos(&pt);
//右击后点别地可以清除“右击出来的菜单”
SetForegroundWindow(m_hWnd);
//托盘菜单 win32程序使用的是HMENU,如果是MFC程序可以使用CMenu
HMENU hMenu;
//生成托盘菜单
hMenu = CreatePopupMenu();
//添加菜单,关键在于设置的一个标识符 WM_ONCLOSE 点击后会用到
AppendMenu(hMenu, MF_STRING, WM_ONCLOSE, _T("Exit"));
//弹出菜单,并把用户所选菜单项的标识符返回
int cmd = TrackPopupMenu(hMenu, TPM_RETURNCMD, pt.x, pt.y, NULL, m_hWnd, NULL);
//如果标识符是WM_ONCLOSE则关闭
if (cmd == WM_ONCLOSE)
{
m_trayIcon.hIcon = NULL;
Shell_NotifyIcon(NIM_DELETE, &m_trayIcon);
//退出程序
::PostQuitMessage();
}
}
bHandled = true;
return ;
}

里面写的很清楚啦需要你自己设置一个图标导入资源里面就可以啦
如图:

在Notify函数中应将

if(msg.spender == m_pCloseBtn)
{
PostQuitMessage(0);
return;
}

替换为

if(msg.spender == m_pCloseBtn)
{
::ShowWindow(m_hWnd,SW_HIDE);
return;
}

Duilib程序添加托盘图标显示的更多相关文章

  1. MFC为应用程序添加托盘(右键托盘,弹出菜单)

    源代码:http://download.csdn.net/detail/nuptboyzhb/4137784 1.       导入一个托盘图标的资源(.ico)格式:资源ID为IDI_ICON1 2 ...

  2. [收集]在iPhone桌面的应用程序图标右上角显示数字

    能够在ios桌面的程序icon右上角显示数字(badge number)的方法 在ViewController中的viewDidLoad方法中添加如下代码即可 - (void)viewDidLoad ...

  3. Ubuntu14.04下Unity桌面托盘图标显示问题

    本来想丰富一下功能,遂开始安装大开眼界:Ubuntu下10个厉害的Indicator小程序这里的Indicator小程序. 很不幸,在安装到indicator-multiload的时候,准备注销看一下 ...

  4. IOS编程教程(八):在你的应用程序添加启动画面

    IOS编程教程(八):在你的应用程序添加启动画面   虽然你可能认为你需要编写闪屏的代码,苹果已经可以非常轻松地把它做在Xcode中.不需要任何编码.你只需要做的是设置一些配置. 什么是闪屏 对于那些 ...

  5. 将程序添加到右键菜单和图标(以记事本、UltraEdit为例)

    原文:将程序添加到右键菜单(以记事本.UltraEdit为例) 如何将程序加入右键菜单,这里分别以记事本.UltraEdit为例! 以记事本程序为例: 1. 在运行中输入regedit,打开注册表,找 ...

  6. 011.Adding Search to an ASP.NET Core MVC app --【给程序添加搜索功能】

    Adding Search to an ASP.NET Core MVC app 给程序添加搜索功能 2017-3-7 7 分钟阅读时长 作者 本文内容 1.Adding Search by genr ...

  7. C# WinForm程序添加启动画面

    如果程序在装载时需要进行较长时间的处理,最好使用启动画面,一方面美化程序,一方面可以不使用户面对着一片空白的程序界面. 我手头上一个小项目主界面启动时需要检查用户文件及运行环境是否有效,需要一段时间处 ...

  8. 微信小程序添加悬浮在线客服会话按钮

    微信为小程序提供客服消息能力,小程序用户可以方便快捷地与小程序服务提供方进行沟通,并且已经做成了组件的形式,直接就可以调用.客服会话按钮,用于在页面上显示一个客服会话按钮,用户点击该按钮后会进入客服会 ...

  9. 如何将程序添加到Windows桌面右键菜单

    在Windows桌面上右键单击鼠标时,将显示默认菜单.如果您想要将其它程序添加到Windows桌面右键菜单中,则可以按照以下步骤执行: 运行WinUtilities上下文菜单管理器 点击添加 选择菜单 ...

随机推荐

  1. Python格式化字符串知多少

    字符串格式化相当于字符串模板.也就是说,如果一个字符串有一部分是固定的,而另一部分是动态变化的,那么就可以将固定的部分做成模板,然后那些动态变化的部分使用字符串格式化操作符(%) 替换.如一句问候语: ...

  2. Unknown failure (Failure - not installed for 0) 、Error while Installing APKs

    解决方法一: 设置 -> 更多设置 -> 开发者选项 ->关闭启用MIUI优化 解决方法二:(这种方法就用不了apply changes的功能了) 描述:在一些机型上安装软件 提示卸 ...

  3. hbase60010端口无法访问web页面

    原因:HBASE1.0之后的版本web端访问的接口变更为16010

  4. animate使用方法

    链接:https://www.cnblogs.com/xiaohuochai/p/7372665.html

  5. php头像上传插件

    最近找到了一个比较简单实用的php头像上传插件,兼容IE8及以上等主流浏览器,分享给大家.效果如下: 1.首页效果图:默认显示默认图片. 2.点击图片(拥有裁剪框,可以拖动.缩放.裁剪头像等功能,注意 ...

  6. 360安全浏览器已经完成和统一操作系统UOS的适配工作

    导读 统信软件公司宣布,360安全浏览器已经完成和统一操作系统UOS的适配工作.如今,基于龙芯.兆芯.飞腾.海光等国产CPU的统一操作系统UOS,赢全面支持电子公文.电子签章.流版式办公插件等近百款国 ...

  7. 消息队列(五)--- RocketMQ-消息存储1

    问题 : 部署时如何知道自己是 broker 还是 NameServer topic 订阅信息放在哪里 broker 的作用到底是什么 纪录是如何持久化的 群发的时候,是如何储存消息的 send 方法 ...

  8. oracle 密码过期问题

     密码过期问题: ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

  9. 【CSS属性#1】

    " 目录 一.宽和高 二.字体属性 1. 文字字体 font-famlly 2. 字体大小 font-size 3. 字重(粗细) font-weight 4. 文本颜色 color 三.字 ...

  10. mcast_set_loop函数

    #include <errno.h> #include <sys/socket.h> #include <net/if.h> #include <netine ...