《Windows API巡礼》のShell_NotifyIcon函数和NOTIFYICONDATA结构

Shell_NotifyIcon函数用于向Windows系统任务栏的状态区域发送消息,原型如下:

其中

1)参数dwMessage表示该函数要执行的操作,取值如下:

NIM_ADD:往状态区添加一个图标;在参数lpdata指向的结构中的参数uIDguidItem给这个图标指定了标识;

NIM_MODIFY:修改状态区的一个图标;使用的是NIM_ADD中指定的图标标识;

NIM_DELETE:删除状态区的一个图标;使用的是NIM_ADD中指定的图标标识;

NIM_SETFOCUS:将焦点重新设给任务栏的通知区域;一般通知区域的图标在完成UI操作时使用该函数来重新获取焦点,例如通知区域的图标显示一个快捷菜单,但用户按ESC键取消该菜单的显示时,图标就可以使用NIM_SETFOCUS来重新使通知区域获得焦点;

NIM_SETVERSION:指示通知区域要遵循参数lpdata指向的结构中的参数uVersion指定的版本来操作,版本号指定了哪些成员是可识别的。

 

2)参数lpdata是指向NOTIFYICONDATA结构的指针,该结构的内容取决于参数dwMessage的值,例如可以定义一个图标用于添加到通知区域,以用来显示通知;也可以指定一个用于修改或删除的图标。

 

返回值:

成功返回TRUE,失败返回FALSE;当dwMessage设置为MIN_SETVERSION时,该函数返回TRUE表示版本号更改成功,返回FALSE表示系统不支持指定的版本。

 

注意:对于Windows 2000(Shell32.dll version 5.0)Shell_NotifyIcon对于鼠标和键盘事件的处理与早期的操作系统的不同点在于:

1)用户使用键盘选择了通知图标的快捷菜单,Shell将发送WM_CONTEXTMENU消息给图标对应的应用程序,而早期操作系统则发送WM_RBUTTONDOWNWM_RBUTTONUP消息;

2)用户使用键盘选择通知图标,并使用空格键或Enter键激活它,则Shell将发送NIN_KEYSELECT通知给应用程序,而早期版本则发送WM_RBUTTONDOWNWM_RBUTTONUP消息;

3)用户使用鼠标选择通知图标,并使用Enter键激活它,Shell将发送NIN_SELECT通知给应用程序,而早期版本发送WM_RBUTTONDOWNWM_RBUTTONUP消息;

 

对于Windows XP(Shell32.dll version 6.0),当用户将鼠标指向关联着气泡通知的图标时,Shell将发送下列消息:

1NIN_BALLOONSHOW:当气泡显示时发送(气泡在队列中排队);

2NIN_BALLOONHIDE:当气泡消失时发送,例如,当图标删除时。在气泡因为超时或者用户鼠标单击后消失时,不发送该消息;

3NIN_BALLOONTIMEOUT:气泡超时后消失时发送;

4NIN_BALLOONUSERCLICK:用户鼠标单击气泡使气泡消失时发送;


结构NOTIFYICONDATA包含了Windows系统在通知区域显示通知所需的信息,本函数Shell_NotifyIcon使用,原型如下:

上面两个函数使用的实例当然是在编写系统托盘程序时,下面这个类摘自金山开源作品之ARP防火墙,先看头文件吧:

接下来就是实现文件:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值