一个很实用的VC系统托盘例子

本文详细介绍如何使用VC创建系统托盘图标,包括NOTIFYICONDATA结构解析及Shell_NotifyIcon函数的应用,并提供了完整的示例代码。
部署运行你感兴趣的模型镜像

源码下载:http://download.youkuaiyun.com/source/2840315

  网上有关VC系统托盘的例子有很多,但我还是写了个例子,一方面是只要稍微修改就能成为你的工程,另一方面是程序代码注释非常详细。相信我写的例子能给你带来帮助。

 

  系统托盘的关键是NOTIFYICONDATA结构:

以下是代码片段:
typedef struct _NOTIFYICONDATA { 
DWORD cbSize; //结构大小 (以字节为单位)
HWND hWnd; //接收托盘图标通知消息的窗口句柄 
UINT uID; //应用程序定义的该托盘图标的ID号
UINT uFlags; //设置该托盘图标的属性 
UINT uCallbackMessage; //应用程序定义的消息ID号,此消息传递给hWnd
HICON hIcon; //托盘图标的句柄
char szTip[64]; //鼠标停留在托盘图标上显示的提示信息 
} NOTIFYICONDATA, *PNOTIFYICONDATA;

其中uFlags可以是下列组合或其中之一:
  NIF_ICON //设置成员hIcon有效
  NIF_MESSAGE //设置成员uCallbackMessage有效
  NIF_TIP //设置成员szTip有效

还有一个重要的函数是:

Shell_NotifyIcon()功能是在系统托盘上增加、删除或修改图标。
其原型为:
 

以下是代码片段:
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(DWORD dwMessage,PNOTIFYICONDATA pnid); 
  Pnid是NOTIFYICONDATA结构的指针。 
  dwMessage是被传递的消息,可以是以下消息之一: 
   NIM_ADD //增加图标 
   NIM_DELETE //删除图标 
   NIM_MODIFY //修改图标 

 

这些具体的实现体现在例子程序的初始化托盘InitTray()中:

//初始化托盘

以下是代码片段:
void CTrayDemoDlg::InitTray()
{
    nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); 
    nid.hWnd=this->m_hWnd; 
    nid.uID=IDR_MAINFRAME; 
    nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ; 
    nid.uCallbackMessage=WM_NOTIFYICON;//自定义的消息名称 
    nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); 
    strcpy(nid.szTip,"托盘例子"); //信息提示
    Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标 
}

 

另外 还有的就是定义了一个消息处理函数,用于响应鼠标单击或双击等事件。

 

 

具体的实现请参考附带的例子吧。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

joinclear

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

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

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

打赏作者

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

抵扣说明:

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

余额充值