首先介绍一下基本知识:
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
接收通知区域消息的窗口句柄。
uID
应用程序定义的任务栏图标的ID。Shell使用窗口句柄+uID或者GUID的方式来标识Shell_使用到的图标。你可以使用不同的uID来把多个图标关联到一个窗口句柄上。如果指定了GUID,那么uID就会被忽略。
uFlags
一个标志,用来表示结构体中剩下的字段哪些是可用的,或者提供提示条应当如何显示的 附加信息。可以是下面一些值的组合:
uCallbackMessage
应用程序定义的消息ID。系统使用这个ID向由hWnd指定的窗口发送通知消息。当鼠标事件在图标区域发生、鼠标在图标的相关区域晃悠时,发送这个消息;当用鼠标或者键盘选中了图标、或者这些行为发生在气泡通知区域时,发送消息。
uVersion
当uVersion为0或者NOTIfYICON_VERSION时,消息的wParam参数包含了发生事件的图标的ID。这个ID可以是32字节长。lParam参数包含了与该事件相关的鼠标或者键盘消息。例如,当鼠标指针经过任务栏图标时,发送WM_MOUSEMOVE消息。
当uVersion为NOTIFYICON的时候,应用程序通过uCallbackMessage成员继续接收应用程序自定义消息的通知事件,但是lParam和wParam参数意义发生了改变:
hIcon
将要添加/修改/删除的图标句柄。
使用LoadIconMetric函数来确定装载了正确的图标并且被适当的缩放。
szTip
一个标准提示字符串,以NULL结尾。包括结尾NULL字符,最多可以64个。
对于2000及其以后的版本,szTip可以容纳包括NULL结尾在内的128个字符。
dwState
2000及其以后的系统支持此项。图标的状态。可以是下面的一个或者几个值。
dwStateMask
2000及其以后的系统支持。指定了dwState的哪些位是可以被检索或者修改的。取值和dwState相同。例如,dwStateMask设置了NIS_HIDDEN,则当图标的共享字节被忽略时,无论dwState是什么值,只有MIS_HIDDEN状态可以修改。(这块英文没看懂。)
szInfo
2000及其以后的系统支持。气泡通知中显示的文本,该文本以NULL结尾。最多可以有包括NULL在内的256个字符,但是因为要调整区域所以应该限制在200个以内。如果要从UI删除气泡通知,可以(用NIM_DELETE)删除图标,或者在uFlags中设置NIF_INFO并且设置szInfo为空字符串。
uTimeout
在Vista中不赞成使用这个成员。通知显示的时间现在基于系统的辅助功能设置。
hBalloonIcon
Vista及其之后的系统支持。程序提供的自定义通知图标的句柄,必须独立于通知区域图标。如果这个字段不为NULL,并且dwInfoFlags设置为NIF_USER,那么这个图标会被用作通知图标。如果这个成员为NULL,合法的动作就是继续执行。
同样,你只要知道上诉结构体的存在即可,我们可以查询msdn来了解每个成员如何赋值呢。这是windows程序托盘图标的基本知识
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10905.html