VC Tray Icon的使用

使用Shell_NotifyIcon 建一个标准气泡通知盒图标 虽然.net 扩展并平民化了大部分的API,但就notifyicon 来讲,系统自己的notifyicon 做的必然安全,以至于 shell32.dll 新版本(此气泡功能是win98 的ie5 就具备)的功能完全得不到体现,在优快云 我也见过不少的人都在为扩展一个更完美的notifyicon 做努力,为此笔者就在中秋前夜的一些空闲写了这个扩展控件权砖引玉,这二天就有不少朋友扔鸡蛋,于是特撰此稿来补充此控件的功能及它的具体内容以便于朋友们的二次开发,本文也定义了大部分的一些的常数和结构。 阅读详情
为CMainFrame增加如下的成员变量:
 NOTIFYICONDATA m_trayIcon;
 CMenu m_menuTray;

在CMainFrame的OnCreate函数末尾增加:
 m_trayIcon.cbSize = sizeof(NOTIFYICONDATA);
 m_trayIcon.hIcon = (HICON)LoadImage(AfxGetApp()->m_hInstance,
  MAKEINTRESOURCE(IDI_TRAYICON), IMAGE_ICON, 16, 16, 0);
 m_trayIcon.hWnd = m_hWnd;
 m_trayIcon.uID = MAINTRAYICON;
 m_trayIcon.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
 m_trayIcon.uCallbackMessage = WM_TRAYICON;
 strcpy(m_trayIcon.szTip, LoadResString(IDS_TOOLTIP));
 Shell_NotifyIcon(NIM_ADD, &m_trayIcon);

增加消息WM_TRAYICON响应函数:
ON_MESSAGE(WM_TRAYICON,OnTrayNotify)

int CMainFrame::OnTrayNotify(WPARAM wParam, LPARAM lParam)
{
 if(wParam != MAINTRAYICON)
  return 0L;
 
 if(m_menuTray.m_hMenu == NULL && !m_menuTray.LoadMenu(IDR_MAINFRAME))
  return 0;
 
 CMenu* pSubMenu = m_menuTray.GetSubMenu(0);
 if (!pSubMenu)
  return 0;
 
 if (lParam == WM_RBUTTONUP)
 {
  ::SetMenuDefaultItem(pSubMenu->m_hMenu, 0, TRUE);
  CPoint pos;
  GetCursorPos(&pos);
  
  SetForegroundWindow();
  pSubMenu->TrackPopupMenu(TPM_RIGHTALIGN|TPM_LEFTBUTTON
   |TPM_RIGHTBUTTON, pos.x, pos.y, this, NULL);
 }
 else if(lParam == WM_LBUTTONDOWN)
 {
  ShowWindow(SW_SHOW);
  SetForegroundWindow();
 }
 else if(lParam == WM_LBUTTONDBLCLK)
 {
  SendMessage(WM_COMMAND, pSubMenu->GetMenuItemID(0), 0);
 }
 return 1L;
}
如果同时还需要屏蔽窗口关闭按钮的话需要增加消息处理函数:
ON_WM_SYSCOMMAND()

void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
 if(nID == SC_CLOSE)
 {
  ShowWindow(SW_HIDE);
  return;
 }
 CFrameWnd::OnSysCommand(nID, lParam);
}

在窗口的Destroy函数调用:
 Shell_NotifyIcon(NIM_DELETE, &m_trayIcon);
VC++实用技巧:网络通信、托盘图标和剪贴板操作 网络编程是让计算机通过网络与其他计算机通信的过程,它涉及到计算机网络协议栈的多个层面。在VC++中,通常我们会使用Winsock库(Windows Sockets API)来实现网络通信。Winsock提供了执行各种网络操作的函数和协议,支持TCP/IP通信协议。Windows API提供了一些关键函数来操作剪贴板::打开剪贴板进行数据操作。:清空剪贴板上的数据。:将指定格式的数据放入剪贴板。:从剪贴板获取数据。:关闭剪贴板。 阅读详情

相关推荐

托盘库(VC++)trayicon。

一个封装比较全的托盘库,用vc++6.0开发,对应用开发有用。

VC对于ICON的设置替换(即更改应用程序图标)

在主程序中找到对应的构造函数,其中会有  m_hIcon = AfxGetApp()->LoadIcon(IDR_MAIN); 这里就知道怎么修改了   然后在初始化函数里有  SetIcon(m_hIcon, TRUE);   // Set big icon  SetIcon(m_hIcon, FALSE);  // Set small icon  这里就是使得修改生效的函数了

2819

任务栏图标封闭类vc++ TrayIcon源代码

内容索引:VC/C++源码,控件相关,任务栏图标  任务栏图标封闭类vc++ TrayIcon源代码,是一个MFC扩展DLL,可能其它非MFC扩展的程序无法使用。   它的使用方法:   TrayIcon 使用帮助:   1.在工程的资源头文件(Resource.h)   2.映射消息处理涵数:   3.加入消息响应函数:   4.隐藏窗口,启用托盘:   5.显示窗口,关闭托盘:

VC 6.0画简单的ICON图片,并将ICON图片插入到LlistCtrl控件的第一行第一列中

步骤: 1、点击工程的Resource资源,此时会出现该工程所有的资源信息,右键点击ICON项,选择"insert icon"项,此时会在右边窗口出现一图片,Device一项是:standard (32x32),图片右边会有编辑图片的工具; 2、在此图片上进行画图,在这里主要是用不同的颜色来对图片的小方格进行填充,从而画出想要的图片,画好之后,会自动保存在工程的res文件夹下,这种方法很适合画

tanghaili的专栏 1961

【电机学复习笔记】同步电机的特性及参数的求取

同步电机的主要特性包括:空载特性、短路特性、零功率因数负载特性、外特性和调整特性。 基于以上特性我们可以实现: 从空载特性和短路特性求同步电抗的不饱和值和短路比; 从零功率因数负载特性和空载特性确定保梯电抗(定子漏抗)和电枢反应电动势

Pantrick_的博客 2万+

影刀RPA验证码识别避坑指南:官方指令、Python ddddocr与第三方图鉴怎么选?

本文深度对比了影刀RPA验证码识别的三种方案:官方AI指令、Python ddddocr开源库和第三方图鉴服务。从识别率、成本、维护性等维度分析各方案优劣,提供实战选型建议和优化技巧,帮助技术决策者在自动化流程中高效解决验证码识别难题。

weixin_30790841的博客 471

用一个MFC实现CTrayIcon类

visual c++ 时尚编程百例 把TrayIcon.cpp和TrayIcon.cpp拷贝到你的项目目录,并添加到项目中

abc 290

autoDL算力云装Xinference[坑与步骤]

在页面直接点击下载会出现下着下载进度条消失,试了几次才出现这个报错,现在我们就继续安装缺少的包吧。这一步成功绕开了系统盘空间限制。先租用一个合适的服务器,建议不要选最新版本,跟我选的一样即可,不然后面会出现。最近在 AutoDL 上尝试部署。🚫 不要直接使用以下命令。点击下面链接即可打开。

ngadminq的博客 2382

使用VC++进行Tray区编程

使用VC++进行Tray区编程1.使用向导建立一个MFC对话框应用程序,假设叫TrayDemo2.增加消息处理函数 virtual BOOL OnInitDialog(); afx_msg void OnDestroy(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg LRESULT OnTrayNotify(WPARA

lithe的Blog 1952

爬虫实战:抖音视频搜索数据爬虫开发实战(附完整Python源码)

【代码】抖音视频搜索数据爬虫开发实战(附完整Python源码)

weixin_61226361的博客 3596

Android 白名单保活实战:主流厂商适配指南

本文详细解析了Android应用白名单保活的实战策略,重点针对华为、小米、OPPO、vivo等主流厂商的系统特性,提供了精准的后台设置页面跳转适配方案。文章从基础的前台服务实现讲起,深入讲解了白名单的判断、申请与厂商适配的核心代码与避坑指南,旨在帮助开发者合规、稳定地提升应用后台存活率。

motor的博客 1861

VC实现托盘程序

<br />现在很多程序都有托盘功能,下面介绍一下如何在VC下实现托盘程序的功能:<br />  1.准备一个菜单<br />  菜单有两上项“显示”和“退出”。<br />  菜单的名为“托盘菜单”ID为:IDR_MENU_TRAY,两个项分别为:IDR_MENU_SHOW,IDR_MENU_EXIT。<br />  2.初始化托盘<br />  (1)源代码<br />  void CSmsDlg::InitTray()<br />  {<br />  nid.cbSize=(DWORD)sizeof(

啊渊的专栏 960

国外无人机蜂群作战典型战例及发展趋势

参与袭击的无人机为简易组装的固定翼飞机,采用小排量活塞发动机和手机GPS通信模块零件,机翼为轻木加泡沫板混合结构,尾梁为铝合金方管,主要依靠胶带粘接,以上全部配件均可在商用市场买到,成本较低,可在短时间内装配完成。③战场纵深短、瞬时性强。蜂群作战的参战数量显著增加,这一方面得益于无人机技术的飞速发展使得廉价无人机可以大量生产和仿制,另一方面凭借迅速发展的投放和回收技术以及集群控制技术,使得无人机蜂群可在极短时间内实现编队饱和攻击,在快速消耗敌方高价值防空武器系统的同时,保证己方物资系统的突防概率。

renhongxia1的博客 2479

VC最小化到托盘程式

参考文章:http://www.cnblogs.com/zhangpengshou/archive/2009/07/11/1520819.html 基本上是按照这篇文章所写的方法来做的,只有稍许改动。 在VC6.0下实现的步骤如下: 一、创建基于对话框的MFC程式 二、导入一图标ICON,ID设为IDI_TRAY 三、为新建的对话框类添加成员变量 NOTIFYICONDATA    m_

Hisin Wang的专栏 953

YOLOv8轻量化模型瘦身术:深度解析与实战LAMP剪枝 YOLOv8(2021)

YOLOv8模型LAMP剪枝技术解析与实战 本文深入探讨了LAMP剪枝技术在YOLOv8目标检测模型中的应用。针对深度学习模型部署面临的资源限制问题,LAMP剪枝通过最小化L2失真和层自适应稀疏度分配,实现了高效模型压缩。相比传统幅度剪枝的"一刀切"方法,LAMP创新性地将剪枝建模为优化问题,定义LAMP分数来衡量权重重要性,自动确定各层最佳剪枝率。文章从理论基础出发,详细解析了LAMP的核心数学公式和算法流程,并提供了完整的YOLOv8移植实战指南,包括代码结构、剪枝步骤和微调策略。通

FJN110的博客 2422

i.MX6ULL系统移植 | 使用busybox制作根文件系统(1.29.0)

一. 下载BusyBox BusyBox是一个继承了大量Linux命令核工具的软件,像常用的ls、cp、mv、ifconfig等命令。一般下载BusyBox的源码,然后配置Busybox,选择自己想要的功能,最后编译即可。 BusyBox在官方可以直接下载:https://www.busybox.net/。目前最新是1.35.0,这里我使用1.29.0版本。 axel https://www.busybox.net/downloads/busybox-1.29.0.tar.bz2 下载之后解压: tar

Mculover666的博客(嵌入式) 1145

VC中实现系统托盘程序

要实现系统托盘程序,就要借助Shell_NotifyIcon这个函数。下面是一个例子:首先要初始化一个NOTIFYICONDATA m_Tnd.cbSize=sizeof(NOTIFYICONDATA); m_Tnd.hWnd=this->m_hWnd; m_Tnd.uID=IDD_CONSOLE_DIALOG; m_Tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;

编程の浪子的专栏 1538

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VC下添加和删除系统托盘图标,处理响应事件(Shell_NotifyIcon)

分步骤如下: 1,定义用户消息 #define WM_TRAY_NOTIFY (WM_USER + 8118) 2,添加托盘图标 NOTIFYICONDATA data; memset(&data, 0, sizeof(data)); // the basic functions need only V1 #ifdef NOTIFYICONDATA_V1_SIZE data.cbS

sandro_zhang的专栏 5303

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

vc 托盘

NOTIFYICONDATA IconData;IconData.cbSize=sizeof(NOTIFYICONDATA); //设置结构大小IconData.hWnd=this->m_hWnd; //设置图标对应的窗口IconData.uID=IDR_MAINFRAME;...

weixin_30687587的博客 165

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

vc实现托盘

 NOTIFYICONDATA结构体解释如下:用来做任务栏右边的小图标// 结构长度 m_NotifyIconData.cbSize = sizeof(NOTIFYICONDATA); // 窗口,消息将发给该窗口 m_NotifyIconData.hWnd = this->m_hWnd; // 表示消息发给该窗口时附带ID,那么你就能够if( id == IDR_MAINFRAME )

momentt的专栏 1310

VC 将程序最小化到托盘

这篇文章内容比较基础,最近看到觉得有用,顺便翻译一下 有空可以写一个自己的TrayIcon类,化简这些原始的操作。 Introduction 这篇文章解析了 Shell_NotifyIcon 这个函数用法--用来建立你自己的应用程序的系统托盘图标. 这篇文章给了基本的缩小到托盘的操作过程并让你从中了解. 这篇文章提供8个简单的步骤让你成功的实现在你的程序中建立系统托盘图标. 源

justlovetao的专栏 1094

VC的托盘程序

原文:VC的托盘程序 见网友对VC中的托盘

张云飞的专栏 1661

vc 托盘图标

/*------------------------------------------------------------------------- *   Copyright   (c)   2004,   Ferri   Weng *   All   Lefts

wanglei2258的专栏 886

2.VC设置对话框程序最小化托盘效果

1.头文件添加如下内容: BOOL m_bTray; //托盘标记;初始元为FALSE BOOL SetTray(BOOL bTray); //设置托盘效果 afx_msg LRESULT OnTrayCallBackMsg(WPARAM wp, LPARAM lp); //托盘处理函数 //额外还要自定义一个消息 #define WM_TRAY_MSG WM_USER+1000...

weixin_30342827的博客 111

vc学习之关于缩放到托盘区

昨天为了这个缩放调了很长时间,非常郁闷的发现最终导致为题的只是没有映射消息,现在我把最终代码的实现贴出来看看1、增加自定义消息、图标#define WM_NOTIFYICON WM_USER+5#define IDI_ICON  0x00052、增加响应函数 在DECLARE_MESSAGE_MAP()前面增加 afx_msg void OnNotifyIcon(WPARAM wParam

人生三十重学艺 186
下一篇: VC创建快捷方式
oeichenwei
博客等级 码龄23年 8粉丝 42原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值