MFC之系统托盘实现与应用

本文介绍了如何在MFC中实现系统托盘功能,详细讲解了NOTIFYICONDATA结构体及其成员变量的使用,包括添加、修改和删除托盘图标,以及处理用户交互如双击显示窗口和右击弹出菜单的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统托盘大家应该都了解,如果程序需要常时间运行,将程序缩小的托盘中移动是个不错的选择。

现在看看系统托盘应该怎么实现:

首先,必须知道一个结构体NOTIFYICONDATA

,这是MFC中包含系统需要的用来传递托盘区域消息的信息结构体,有了它,我们今天的任务就完全可以轻松完成了!


     这时候,我们可以在我们的类中申明一个NOTIFYICONDATA的成员变量为m_nid。

接下来,我们可以给这个结构体变量赋我们想要的值了,记住赋值语句要写在OnInitDialog初始化窗口函数里,不要写在构造函数中,否则将会无效。

m_nid.cbSize = sizeof( NOTIFYICONDATA );

m_nid.hWnd = m_hWnd; 
m_nid.uID = IDR_MAINFRAME; 
m_nid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
m_nid.uCallbackMessage = WM_SYSTEMTRAY;    //自定义消息
m_nid.hIcon = m_hIcon;                                               
strcpy(m_nid.szTip, "认证系统客户端");

::Shell_NotifyIcon(NIM_ADD, &m_nid);

然后,让我们一句句的解析这段代码,

m_nid.cbSize = sizeof( NOTIFYICONDATA );

cbSize表示结构体的大小,以字节未单位,这里赋值了NOTIFYICONDATA的结构体标准大小就行了,用sizeof函数就能获得其字节大小

m_nid.hWnd = m_hWnd; 

hWnd是你想要赋予托盘的窗口句柄,MFC的窗口类中因为都是继承CDialog类,所以其中会有一个成员变量是m_hWnd保存着当前实例窗口的具体句柄,我们将其赋值给它就行了

m_nid.uID = IDR_MAINFRAME; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值