NOTIFYICONDATA结构主要用来向将窗口最小化到任务栏托盘区域,发送消息,接收消息。

Shell_NotifyIcon函数说明:

函数格式

BOOL Shell_NotifyIcon( DWORD dwMessage,PNOTIFYICONDATA lpdata);

参数说明:

dwMessage为输入参数,传递发送的消息,表明要执行的操作。可选的值如下:

NIM_ADD

向托盘区域添加一个图标。此时第二个参数lpdata指向的NOTIFYICONDATA结构体中的hWnd和uID成员用来标示这个图标,以便以后再次使用Shell_NotifyIcon对此图标操作。

NIM_DELETE

删除托盘区域的一个图标。此时第二个参数lpdata指向的NOTIFYICONDATA结构体中的hWnd和uID成员用来标示需要被删除的这个图标。(说明,删除托盘区一般情况下指定hWnd和uID就可以了,但也有例外,当向托盘区添加完图标后,鼠标右击托盘图标,应用程序这时会弹出一个菜单,左键单击一个菜单项。假如应用程序弹出了一个对话框,好,把它关掉,这时再右键单击托盘区图标,在弹出的菜单中选择“退出”菜单,结果,程序退出了,而图标却还在那,如果这时把鼠标移到图标上,图标会立马消失。但这不是我们想要的结果。所以要想保证程序退出时托盘区图标消失,请添加如下语句:

NOTIFYICONDATA tnid;

tnid.uFlags   =   NIF_ICON;

OK。这样就大功告成了。)

NIM_MODIFY

修改托盘区域的一个图标。此时第二个参数lpdata指向的NOTIFYICONDATA结构体中的hWnd和uID成员用来标示需要被修改的这个图标。

NIM_SETFOCUS

Version 5.0. 设置焦点。比如当用户操作托盘图标弹出菜单,而有按下ESC键将菜单消除后,程序应该使用此消息来将焦点设置到托盘图标上。

NIM_SETVERSION

Version 5.0. 设置任务栏按照第二个参数lpdata指向的NOTIFYICONDATA结构体中的uVersion成员指定的版本号来工作。此消息可以允许用户设置是否使用基于Windows2000的version 5.0的风格。uVersion的缺省值为0,默认指明了使用原始Windows 95图标消息风格。具体这两者的区别请参考msdn中的Shell_NotifyIcon函数说明的Remarks。

lpdata为输入参数,是指向NOTIFYICONDATA结构体的指针,结构体内容用来配合第一个参数wMessage进行图标操作。

返回值:

如果图标操作成功返回TRUE,否则返回FALSE。

如果dwMessage参数设为NIM_SETVERSION,则如果版本设置成功返回TRUE,如果设置的版本不支持返回FALSE。

NOTIFYICONDATA 结构体说明

包含系统需要的用来传递托盘区域消息的信息。

typedef struct _NOTIFYICONDATA {
DWORD cbSize;
HWND hWnd;
UINT uID;
UINT uFlags;
UINT uCallbackMessage;
HICON hIcon;
TCHAR szTip[64];
DWORD dwState;
DWORD dwStateMask;
TCHAR szInfo[256];
union {
UINT uTimeout;
UINT uVersion;};
TCHAR szInfoTitle[64];
DWORD dwInfoFlags;
GUID guidItem;
} NOTIFYICONDATA, *PNOTIFYICONDATA;

cbSize

结构体的大小,以字节为单位。

hWnd

窗口的句柄。标示的窗口用来接收与托盘图标相关的消息。Shell_NotifyIcon函数调用时,hWnd和uID成员用来标示具体要操作的图标。

uID

应用程序定义的任务栏图标的标识符。Shell_NotifyIcon函数调用时,hWnd和uID成员用来标示具体要操作的图标。通过将多次调用,你可以使用不同的uID将多个图标关联到一个窗口hWnd。

uFlags

此成员表明具体哪些其他成员为合法数据(即哪些成员起作用)。此成员可以为以下值的组合:

NIF_ICON

hIcon成员起作用。

NIF_MESSAGE

uCallbackMessage成员起作用。

NIF_TIP

szTip成员起作用。

NIF_STATE

dwState和dwStateMask成员起作用。

NIF_INFO

使用气球提示代替普通的工具提示框。szInfo, uTimeout, szInfoTitle和dwInfoFlags成员起作用。

NIF_GUID

保留。

uCallbackMessage

应用程序定义的消息标示。当托盘图标区域发生鼠标事件或者使用键盘选择或激活图标时,系统将使用此标示向由hWnd成员标示的窗口发送消息。消息响应函数的wParam参数标示了消息事件发生的任务栏图标(对应于前面的uID标识),lParam参数根据事件的不同,包含了鼠标或键盘的具体消息,例如当鼠标指针移过托盘图标时,lParam将为WM_MOUSEMOVE。

hIcon

增加、修改或删除的图标的句柄。注意,windows不同版本对于图标有不同要求。Windows XP可支持32位。

szTip

指向一个以\0结束的字符串的指针。字符串的内容为标准工具提示的信息。包含最后的\0字符,szTip最多含有64个字符。

对于Version 5.0 和以后版本,szTip最多含有128个字符(包含最后的\0字符)。

dwState

Version 5.0,图标的状态,有两个可选值,如下:

NIS_HIDDEN

图标隐藏

NIS_SHAREDICON

图标共享

dwStateMask

Version 5.0. 指明dwState成员的那些位可以被设置或者访问。比如设置此成员为NIS_HIDDEN,将导致只有hidden状态可以被获取。

szInfo

Version 5.0. 指向一个以\0结束的字符串的指针。字符串的内容为气球提示内容。最多含有255个字符。如果要移除已经存在的气球提示信息,设置uFlags成员为NIF_INFO,同时将szInfo设为空。

uTimeout

和uVersion成员为联合体。uTimeout表示气球提示超时的时间,单位为毫秒,此时间后气球提示将消失。系统默认气球提示的超时时间最小值为10秒,最大值为30秒。如果设置的uTimeout的值小于10将设置最小值,如果大于30将设置最大值。将超时时间分为最大最小两种,是因为解决不同图标的气球提示同时弹出的问题,详细内容请参考MSDN中NOTIFYICONDATA结构体说明的remarks。

uVersion

Version 5.0. 和uTimeout成员为联合体。用来设置使用Windows 95 还是 Windows 2000风格的图标消息接口。请参考Shell_NotifyIcon函数的说明获取更多信息。只有当使用Shell_NotifyIcon函数发送NIM_SETVERSION消息时,此成员才有作用。可选的值如下:

0

使用Windows 95风格。针对Windows 2000版本之前的windows设计的软件请使用此值。

NOTIFYICON_VERSION

使用Windows 2000风格。 针对Windows 2000版本以及以后版本的windows设计的软件请使用此值。

szInfoTitle

Version 5.0. 指向一个以\0结束的字符串的指针。字符串的内容为气球提示的标题。此标题出现在气球提示框的上部,最多含有63个字符。

dwInfoFlags

Version 5.0. 设置此成员用来给气球提示框增加一个图标。增加的图标出现在气球提示标题的左侧,注意如果szInfoTitle成员设为空字符串,则图标也不会显示。可选值如下:

NIIF_ERROR

错误图标。

NIIF_INFO

信息图标。

NIIF_NONE

没有图标。

NIIF_USER

使用用户使用hIcon成员指明的图标,要求Windows XP Service Pack 2 (SP2)或以后系统。

NIIF_WARNING

警告图标。

NIIF_ICON_MASK

Version 6.0. 保留。

NIIF_NOSOUND

Version 6.0. 禁止播放相应声音。

guidItem

Version 6.0. 保留。

NOTIFYICONDATA 的使用方法相关推荐

  1. 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群

    作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...

  2. Java面试题大全2021版

    一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...

  3. MFC 操作配置文件INI的方法

    1. VC中用函数读写ini文件的方法 ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息.ini文件由若干个节(Section)组成,每个Sec ...

  4. MFC--关于NOTIFYICONDATA的一些新特性

    注:本文转自 https://my.oschina.net/ypimgt/blog/92195 最近初接触MFC,是为了实现一个传感网络的上位机. 在实现托盘提示时,在网上搜索了不少资料,但已经翻译的 ...

  5. Win32平台下NOTIFYICONDATA的气泡点击功能的响应与实现

    功能来源:本人实现开启自己开发的应用程序或者在用户点击应用程序的关闭按钮来实现最小化到系统托盘,并且要求弹出气泡通知而且能够支持鼠标点击功能. 首先, 确定一下我们是在win32平台使用vs2015+ ...

  6. NOTIFYICONDATA structure

    NOTIFYICONDATA structure Contains information that the system needs to display notifications in the ...

  7. shell_notifyicon和NOTIFYICONDATA

    shell_notifyicon和NOTIFYICONDATA Shell_NotifyIcon函数,向任务栏的状态栏发送一个消息 函数原型 BOOL Shell_NotifIcon( DWORD d ...

  8. 关于NOTIFYICONDATA的一些新特性

    最近初接触MFC,是为了实现一个传感网络的上位机. 在实现托盘提示时,在网上搜索了不少资料,但已经翻译的资料都比较老. 在查看原版的MSDN后,发现NOTIFYICONDATA这个结构中有几项新特性, ...

  9. 【VS开发】最小化到托盘 shell_notifyicon和NOTIFYICONDATA

    shell_notifyicon和NOTIFYICONDATA Shell_NotifyIcon函数,向任务栏的状态栏发送一个消息 函数原型 BOOL Shell_NotifIcon( DWORD d ...

最新文章

  1. 蔡徐坤真的那么火吗?用Python爬一爬蔡徐坤的真假流量粉!
  2. matlab数据无量纲化_MATLAB数据预处理——归一化和标准化
  3. 八个最致命的Linux命令!
  4. asp.net 服务器应用程序不可用
  5. svn文件夹不显示绿色勾的解决方法
  6. 盘点|2021最受开发者欢迎和最具行业影响力的文章
  7. jzoj3382-七夕祭【贪心,中位数】
  8. 前端 网络安全 前端优化 代码架构 笔记
  9. ETCD for java_etcd-java使用
  10. 最适合人工智能的编程语言:JAVA人工智能程序编程
  11. plsqldev显示语言有问题
  12. 《网上订餐系统》开发全程回忆
  13. 关于数学建模(或科研论文)的画图学习建议
  14. 盘古:阿里云飞天分布式存储系统设计深度解析
  15. xp系统如何通过cmd运行命令符查看电脑配置的两种方法
  16. 深圳学校积分计算机,深圳市龙岗区小学积分入学排行榜
  17. clip-summary
  18. linux创建分区大小命令,Linux使用fdisk创建分区详解
  19. Unity3D深入浅出 - Shader基础开发
  20. java每日一练:面试题集合

热门文章

  1. Android studio创建Launcher Activity时没有Backwards Compatibility(AppCompat)的原因
  2. 台灣小葉種烏龍茶茶餅不同產區與不同年份的後發酵多酚類成分變化分析
  3. 2023企业数字化转型组织人才发展
  4. springsecurity教程
  5. docker启动jenkins环境
  6. 如何优雅的获取 Mac OS 系统 IP 地址?
  7. 为OSX备忘录添加密码保护的方法
  8. 离散数学中偏序关系_《离散数学课件》7偏序关系.ppt
  9. 唐纳德·霍尔《第三者》(节选)
  10. 基于JSP的小区物业管理系统的设计与实现