转载:WIN32 SDK编程拾遗-系统托盘图标

win32创建应用程序的系统托盘图标 前段时间工作需要,做了一个应用程序并且是要带有系统托盘图标的,虽然网上还是有很多的相关代码介绍,但是这里还是想写一下,做一个记录吧,简单介绍下过程以及API的调用步骤。     我写的这个是基于一个模态对话框的:开始呢定义出我们要用的变量     NOTIFYICONDATA nid;     UINT WM_TASKBARCREATED = 0;     1、首先在WM_INITDIAL 阅读详情
WIN32 SDK编程拾遗-系统托盘图标

像QQ一样,按打杈按钮,就最小化到系统托盘。代码片断: /*声明一个NOTIFYICONDATA结构的实体(成员很多,有用的不多)*/ NOTIFYICONDATA nti; /*指定一个系统托盘上显示的ICON*/ nti.hIcon = LoadIcon(gInstance, MAKEINTRESOURCE(IDI_ICON)); /*让这个ICON显示出ICON,显示出TIP,能发送MSG*/ nti.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE; /*绑定实体*/ nti.hWnd = hDlg; /*为ICON指定一个ID,因为可以一个实体对应多个ICON*/ nti.uID = NOTIFY_UID;

今天看六级词汇的部分,发现每年的考题都有大量重复词汇,今年考,明年考,年年考。这就是局部性性原理。于是想统计一下词频,用手抄

了一下,发现如果词汇多了,管理起来也不方便。不然干脆就作一个管理自己的生词的软件吧。

初始版本具有一下功能:
1,添加单词到自己的词库(一开始词库单词为0个)。当有重复出现的单词,就在该单词一个字段加一。
2,可以根据自己的遗忘曲线定义一套背单词的算法。比如,现在记忆到昨天为止出现10次以上的单词,10分钟后再记忆一次,第二天再记忆一

次,一周后再一次等;或者形如pre**的生词,就用这套算法,形如com**的生词就用这套算法等。
这样的话,就要自己定义一套简单的描述算法的语言。主要是受了lalex的启发啦。然后还要挂一个解析器。
3,做成QQ那种界面。
(这么设计主要还是考虑到我自己的习惯,敲打命令惯了,觉得写写配置文件是很舒服的事情。)

后续版本希望能支持:
1,挂载金山词霸,stardict等词典软件的词库。
2,屏幕截词。
3,实现UNIX的GUI版本,CLI版本;实现在线版本;可以把本地词库提交到服务器上,于是走到哪里,都可以在线浏览。

最近先实现windows的GUI版本吧。于是今天开始复习一下windows SDK编程,然后陆陆续续就开始做了。

--------------
像QQ一样,按打杈按钮,就最小化到系统托盘。代码片断:

/*声明一个NOTIFYICONDATA结构的实体(成员很多,有用的不多)*/
NOTIFYICONDATA nti;

/*指定一个系统托盘上显示的ICON*/
nti.hIcon = LoadIcon(gInstance, MAKEINTRESOURCE(IDI_ICON));

/*让这个ICON显示出ICON,显示出TIP,能发送MSG*/
nti.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;

/*绑定实体*/
nti.hWnd = hDlg;

/*为ICON指定一个ID,因为可以一个实体对应多个ICON*/
nti.uID = NOTIFY_UID;

/*自定义一条消息,以便处理*/
nti.uCallbackMessage = UWM_NOTIFY;

/*拷贝字符串给TIP(推荐使用StringCbCopy)*/
wcscpy(nti.szTip,TEXT("hello"));

/*好了,在系统托盘显示坐标了。NIM_ADD可以换成NIM_DELETE,NIM_MODIFY等*/
Shell_NotifyIcon(NIM_ADD, &nti);

/*让窗口消失*/
ShowWindow(hDlg, SW_HIDE);
---------------
下面是为系统托盘的ICON的消息处理。
在主回调函数中case UWM_NOTIFY(这个是自定义的信息,上面有提到)。
然后在这个case中,switch(lParam),通过这个lParam,判断获得WM_LBUTTONDBLCLK, WM_RBUTTONCLK等信息,这样就能处理了。
-------------------------------
系统托盘ICON的右键菜单:
这个先在WM_CREATE(窗口)或者WM_INITDIALOG(对话框)处理的地方,写上:

/*QUIT是我自定义的菜单的名称*/
hMenu = LoadMenu(gInstance, "QUIT");
hMenu = GetSubMenu(hMenu, 0);

然后在case UWM_NOTIFY的case RBUTTONCLK处理中,写上:

/*获得那个ICON的坐标*/
GetCursorPos(&point);
/*弹出菜单*/
TrackPopupMenu(hMenu, TPM_RIGHTBUTTON, point.x, point.y, 0, hDlg, NULL);

一般用CursorPos获得的坐标是screen的坐标,而很多时候处理的是client的坐标。于是就可以用ScreenToClient来转化一下。不过对于这个系

统托盘ICON来说就不用了。
---------------------------
今天先大概写那么多吧。 

 

 

此文章属于转载,原文请看

     http://dev.youkuaiyun.com/author/benfaung/9b6bfd5b9c194542b65d90572321543b.html

win 32 托盘图标并右键显示 最近写程序遇到写学托盘图标的问题,一开始拿MFC写的比较简单,然后就拿win32写的,大致浏览了一下网上的各个大佬写的,我又写了一版,很完善,我能运行出来,谢谢大家,顺道帮忙点个赞谢谢。 1、添加头文件 #define WM_SHOWTASK WM_USER+10 #include <shellapi.h> #pragma comment(lib, "shell32.lib... 阅读详情

相关推荐

Win32 API实现系统托盘

这篇博客主要是讲述使用Win32 API编写一个系统托盘。实现的功能有:显示提示框、气泡、上下文菜单。要实现系 统托盘,主要用到的函数是Shell_NotifyIcon,用到的结构体是NOTIFYICONDATA。 当我们运行后,可以在任务栏中看到我们的托盘了 当我们鼠标放在托盘图标上时,单击右键就会出现上下文菜单,我的这个有两个菜单项,Exit和Hide。点击Exit退出程 序,点击Hi

4185

win32进阶之路:程序托盘图标+右键弹出菜单

开场白 本次介绍两个非常棒且实用的技巧:程序托盘图标和右键弹出菜单,效果如下图。 程序托盘图标用了迅雷的图标,右键点击时候会弹出三个选项的菜单。 程序托盘图标设置 我会用尽可能清晰明了的步骤介绍方式来讲述,我假设大家已经动手写了属于自己的windows窗体,刚学习win32的朋友可以看一下我之前的博客,有介绍如何从头创建属于自己的第一个windows窗口,也可以直接参...

weixin_30716141的博客 751

Win32程序添加托盘图标

当鼠标悬浮、点击等事件发生

m0_60352504的博客 1778

win32系统托盘图标,对vc编程很有帮助

很不错的一个例子,对理解系统托盘很有帮助,以后实验用得着的。 #include &lt;windows.h&gt; #define IDR_PAUSE 12 #define IDR_START 13 /* #include &lt;shellapi.h&gt; #pragma comment(lib, "shell32.lib") */ LPCTSTR szAppName...

weixin_34054931的博客 335

创建带自定义右键菜单的Windows系统托盘图标

本文还有配套的精品资源,点击获取 简介:本开发项目演示了如何在Windows系统托盘区域添加自定义右键菜单功能,通过使用Visual Studio 2008和Win32 API。开发者上传了包含自定义注释的代码至优快云,以便初学者理解和学习实现系统托盘图标及右键菜单。项目涉及的知识点包括Win32 API的使用、消息处理机制、菜单创建与管理、资源管理以及可能用到的MFC库...

weixin_42620563的博客 1903

VC++ Win32实现系统托盘气泡提示完整示例

系统托盘通知区域是Windows操作系统中一个重要的用户交互界面元素,通常位于任务栏右侧,用于展示后台运行程序的状态图标与通知提示。该区域不仅提升了用户对应用程序运行状态的感知能力,也为程序提供了低干扰的交互入口。在Win32编程中,合理使用系统托盘功能,可以增强应用程序的用户体验和后台服务的可管理性。本章将从系统托盘的基本构成、应用场景出发,逐步引导读者理解其在实际开发中的作用与实现意义。Windows操作系统的核心设计之一是其事件驱动的消息机制,这一机制是Win32编程中最关键的部分之一。

weixin_30021053的博客 547

使用Win32 API做个系统托盘图标

系统托盘在我们使用的程序中很普遍,下面我们来看一个很不错的例子,使用Win32 API实现,对理解系统托盘有些帮助。 001 #include 002 #define IDR_PAUSE 12 003 #define IDR_START 13

闲云野鹤专栏 938

win32编程之系统托盘图标显示以及弹出气泡提示

该程序使用win32编程技术实现了托盘图标所涉及的各种功能,没有使用mfc。

Win32汇编---实现桌面时钟(有托盘图标)

忙了两三天的空余时间,终于把桌面时钟程序完成了,功能也是比较粗糙的。众所周知的,汇编写程序容易造成代码膨胀,本程序光代码就用了465行,对于我来说也算是不少了…… 除了实现一些基本功能外,我还为程序实现了在托盘显示的功能。关于实现该功能,当然是费了不少时间,首先要感谢lczelion,他的理论支持下,让我知道了该如何去调用API,以及注意事项。主要还是windows外壳函数Shell_...

weixin_30419799的博客 297

托盘+菜单控件(可以实现托盘以及带有图片的菜单)

可以非常简单的实现程序托盘以及带有图片的菜单,还可以实现托盘菜单的闪烁

C#使用Window API创建任务栏托盘图标弹出式菜单

提供了用于实现任务栏托盘图标弹出式菜单的完整代码参照

C++ win32窗口应用程序隐藏任务栏图标/隐藏托盘图标

中托盘操作的方式并不是每次都生效,经过查询,发现托盘可能是写代码的人自己设置的,这种情况下需要自己处理。话不多说,直接上代码吧。

Winter_Sun灬的博客 1585

VMD-CNN-BiLSTM-Attention预测模型 —— 数学模型介绍&完整实例代码

想解决电力负荷预测中的非线性、非平稳难题?这篇博客介绍了一种创新混合模型,结合变分模态分解(VMD)和CNN-BiLSTM-Attention深度学习架构,实现超高精度预测! ✨ 核心亮点: ✅ VMD分解:有效分离复杂负荷信号,提取关键频率特征 ✅ 混合深度学习:CNN捕捉局部模式 + BiLSTM学习长时序依赖 + 注意力机制聚焦关键时段 ✅ 端到端优化:从数据预处理(滑动窗口、归一化)到模型训练(MSE损失+Adam优化),完整流程公开! ✅ 工业级评估:提供MSE、MAE、MAPE、R²多指标验证

qq_42924330的博客 1653

win32 托盘图标的显示以及闪烁功能

win32托盘图标的闪烁与显示

菜鸟之路 4773

Ubuntu 22.04 安装 IsaacLab 2.1.0

本文介绍了IsaacLab的完整安装流程:1)创建Python3.10虚拟环境;2)安装PyTorch2.5.1(CUDA11.8);3)升级pip并安装IsaacSim4.5.0;4)克隆IsaacLab仓库;5)运行安装脚本(需接受EULA)。若遇cmake缺失错误,需执行sudo apt安装。安装完成后可通过Ant-v0训练任务验证,成功运行后将显示IsaacSim窗口和训练完成提示。注意:IsaacSim不同版本可共存于不同环境。

weixin_47880303的博客 2224

华为od 面试八股文_前端_03_含答案

华为od 面试八股文_前端_03_含答案

MISAYAONE的博客 2130

Win32托盘图标 - C语言实现

#include"resource.h" #include<stdio.h> #include<Windows.h> //#include <CommCtrl.h> //#pragma comment(lib,"comctl32.lib") #define WM_NOTIFY_ICON WM_USER+100//自定义消息 处理托盘图标 #define ID...

qq_42577465的博客 1333

OpenSpec 完全指南 config.yaml文件

不管是项目内还是全局存放,自定义工作流都要遵守以下规则,否则会导致OpenSpec无法识别,新手一定要记牢:一个文件夹 = 一个工作流:工作流文件夹的名称,就是中schema字段要填写的名称;每个工作流文件夹必须包含:这是工作流的核心定义文件,没有它,OpenSpec无法识别这个工作流;模板文件统一放templates/目录:如果需要自定义生成文件的模板(比如统一的提案模板、任务模板),就放在工作流文件夹下的templates/里,OpenSpec会自动识别;

h a 6 6 6 c k 为 你解决复杂难题! 1423

【Win32 API】在系统托盘显示图标和弹出气泡

void CMainFrame::ShowTrayIcon(void) { //显示托盘 NOTIFYICONDATA nid; //NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息, //它包括选择的图标、回调消息、提示消息和图标对应的窗口等内容。 nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); //以字节为单位的

bencus2021的专栏 2901

基于ART算法和SIRT算法的超声CT反演及MATLAB代码实现

在超声CT中,反演算法起着至关重要的作用,它通过从测量数据中恢复出目标物体的内部结构。本文将介绍基于ART算法(Algebraic Reconstruction Technique)和SIRT算法(Simultaneous Iterative Reconstruction Technique)的超声CT反演方法,并提供相应的MATLAB代码实现。本文介绍了基于ART算法和SIRT算法的超声CT反演方法,并提供了相应的MATLAB代码示例。基于ART算法和SIRT算法的超声CT反演及MATLAB代码实现。

2301_79326510的博客 566

海思3403烧结、复用及mic输入

3403调试的第一步是版本烧结,版本烧结经常遇到问题,本文记录总结遇到的各种问题。

平面到立体 1355

windows API 创建系统托盘图标

系统托盘在我们使用的程序中很普遍,下面我们来看一个很不错的例子,使用Win32 API实现,对理解系统托盘有些帮助。 [cpp] view plaincopyprint? #include   #define IDR_PAUSE 12  #define IDR_START 13  /* #include  #pragma   comment(lib,   "shell3

whatday的专栏 4628

【学习系列】SAP RAP 20:Unmanaged场景开发示例-调用BAPI、BAPI包装类、BO接口创建标准采购订单

本文介绍了在SAP RAP(Restful ABAP Programming)框架下,通过三种方式实现采购订单创建的方案。首先分析了RAP框架对传统BAPI调用的限制,特别是禁止显式COMMIT语句的要求。随后详细阐述了三种实现方式:1)直接调用传统BAPI(仅支持OP环境);2)使用BAPI包装类(仅支持OP环境);3)调用标准业务对象接口(支持所有环境)。 文章重点说明了在unmanaged场景下的技术实现细节,包括字段控制、缓冲区管理、测试运行与实际调用的分离处理等。针对每种方式都提供了完整的实施步骤

DeveloperMrMeng的博客 599
上一篇: ShellExecute函数相关用法
下一篇: 转载:夜深人静做游戏
bbdg
博客等级 码龄21年 6粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值