NOTIFYICONDATA 的使用方法

NOTIFYICONDATA 的使用方法NOTIFYICONDA 结构主要用来向将窗口最小化到任务栏托盘区域 发送消息 接收消息 Shell NotifyIcon 函数说明 函数格式 BOOLShell NotifyIcon DWORDdwMessa PNOTIFYICOND 参数说明 dwMessage 为输入参数 传递发送的消息 表明要执行的操作 可选的值如下 NIM ADD

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. 保留。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221082.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午6:57
下一篇 2026年3月17日 下午6:58


相关推荐

  • 弹性盒子布局flex

    弹性盒子布局flex一 弹性盒子的常用属性 1 flex 容器 采用 flex 布局的块级标签 div 2 flex 项目 采用 flex 布局的块级标签的子元素 3 排列方向 direction flex 容器的布局方向 4 flex 容器的属性 1 flex direction 布局方向 row 默认值 主轴为水平方向 水平布局 起点在左端 row reverse 主轴为水平方向 水平布局 起点在右端

    2026年3月26日
    2
  • 从入门到真香!java核心技术卷一pdf「建议收藏」

    从入门到真香!java核心技术卷一pdf「建议收藏」拼多多(三面)面试前面完蚂蚁后,早就听闻拼多多这个独角兽,决定也去面一把。首先我在脉脉找了一个拼多多的HR,加了微信聊了下,发了简历便开始我的拼多多面试之旅。这里要非常感谢拼多多HR小姐姐,从面试内推到offer确认一直都在帮我,人真的很nice。拼多多:一面为啥蚂蚁只待了三个月?没转正?Java中的HashMap、TreeMap解释下?TreeMap查询写入的时间复杂度多少?HashMap多线程有什么问题?CAS和synchronize有什么区别?都用synchronize不行么?如

    2022年7月7日
    37
  • 细数家庭安防五大乱象 何时能步入正轨

    细数家庭安防五大乱象 何时能步入正轨虽然智能家居行业在我国的成长已逾十个年头了,但是目前市场离成型仍然有一段距离。市场上可谓“乱象”丛生,这些绊脚石严重阻碍了行业的良性发展。市场乱象繁生,智能家居从概念炒作到价格高抬,相关预测显示,若真如电商一样打起价格战,智能家居就要认输了。“智能家居”(SmartHome)最早被提出和应用是在上世纪80年代的欧美和日本,2000年才被引入中国。世纪…

    2022年6月22日
    25
  • python中换行符怎么写_Python读写文件之换行符

    python中换行符怎么写_Python读写文件之换行符系统的换行符和路径分隔符 os 模块可以获取当前系统的换行符和路径分隔符 windows 操作系统 gt gt gt os linesep r n gt gt gt os sep linux 操作系统 gt gt gt importos gt gt gt os linesep 换行符 n gt gt gt os sep 路径分隔符 open 函数的 ne

    2026年3月26日
    2
  • Android模拟器开发_安卓模拟器开发

    Android模拟器开发_安卓模拟器开发更多例子:https://code.google.com/p/playn/wiki/DemoLinksgameplay–http://gameplay3d.org/index.php旨在帮助独立游戏开发的生态系统,开源的跨平台的3D引擎支持BlackBerry10、PlayBook、AppleiOS5+、AndroidNDK2.3+、MicrosoftWindows7、AppleMacOSX、Linux完整着色系统,基于节点的场景图形系统,粒子系统,Fullfeatured

    2026年1月25日
    9
  • 程序员外包平台_人力资源外包和劳务派遣

    程序员外包平台_人力资源外包和劳务派遣程序员接单平台,程序员接单,程序员外包平台,程序员外包

    2022年9月29日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号