b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

[原创]关于NOTIFYICONDATA的一些新特性

电脑杂谈  发布时间:2016-05-26 05:06:30  来源:网络整理

你是否正在寻找关于notifyicondata的内容?让我把最完整的东西奉献给你:

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

例如:气泡操作响应(想想MSN的单击气泡关闭提示?)、隐藏图标|显示图标(不通过删除)、自定义大Balloon Tip图标等,还是比较吸引人的。

但是,实现这些功能的同时,需要一些额外的代码来提高程序的兼容性。

我把自己摸索的一些结果总结出来吧:
在VS2008+MFC+XP和WIN7 64bit下进行测试通过。
先贴下notifyicondata结构。

以下挑出几个不同的地方,一一做说明。

cbSize

网上通常的做法是

DllGetVersion并不是一个API,具体的使用方法,请参看我另一篇博文《正确使用DllGetVersion》。

Shell32.dll VersioncbSize

6.0.6 or higher (WindowsVista and later) sizeof(notifyicondata)

6.0 (WindowsXP) notifyicondata_V3_SIZE

5.0 (Windows 2000) notifyicondata_V2_SIZE

Versions lower than 5.0 notifyicondata_V1_SIZE

请注意,cbSize中的长度不对时,会直接影响托盘图标能否显示,以及特性是否正常。

uFlags

新特性:

NIF_GUID

  • NIF_REALTIME

  • NIF_SHOWTIP

  • uCallbackMessage

    hIcon

    szTip

    uTimeout

    uVersion

    这是一个比较关键的值

  • 0
  • NOTIFYICON_VERSION
  • NOTIFYICON_VERSION_4
  • 才能实现版本的更改。

    dwInfoFlags

    新特性:

    NIIF_USER

  • NIIF_LARGE_ICON

    NIIF_RESPECT_QUIET_TIME

  • guidItem

    XP和之后系统的特性

  • hBalloonIcon

  • 以上就是notifyicondata的一些新特性,以2010年12月11日官方英文MSDN为原版的翻译与一些自己的提示。

    需注意的是,在网上许多资料对气泡不弹出的解决办法,都是对以下的宏定义进行修改:

    若是按其更改为0x0501之后,类似 NOTIFYICON_VERSION_4,hBalloonIcon等这些6.0版本的宏定义与成员是不可直接使用的。

    其实,这种解决办法是错误的,请设置该值为默认值。

    气泡不能正常显示,正是上文提及的cbSize的值设置不正确所导致的。

    因为在该宏定义为0x0600时,NOTIFYICONDATA结构声明为上文中贴出的结构,而笼统使用sizeof获取的大小,亦为这个大小。但在XP中运行时,Shell32.dll版本较低,notifyicondata中类似hBalloonicon等成员不存在,长度不一致,从而导致托盘异常,气泡无法正常显示。为了正常显示托盘气泡,一定要设置正确的cbSize值。

    下面给出一个CallbackMessage的函数例子,用于NOTIFYICON_VERSION_4时的消息处理,可以实现气泡单击,关闭之类的消息处理,。

    再给出一个简单的大图标Balloon Tip例子:

    另外,可能有人不知道如何立即关闭BalloonTip,只要令szInfo的内容为空,再修改图标,就可以立即关闭提示。

    最后再提醒一点,使用了新特性的程序,很可能在XP下无法使用。所以,想让自己的程序拥有美丽的外观的同时,又能在XP下正常运行,一定要善用上文提及的函数判断shell32.dll版本之后,再配置notifyicondata结构体。

    虽然大图标提示很美观,但也不要滥用提示,除非是自用的,不然用户很可能彻底告别你的程序!

    若是有帮助,留个言支持下,我会继续写一些个人的经验与大家分享~
    欢迎留言交流问题与经验~若是有错误,还请指正!

    以上就是关于notifyicondata的全部内容,相信你一定会非常满意。


    本文来自电脑杂谈,转载请注明本文网址:
    http://www.pc-fly.com/a/shenmilingyu/article-6351-1.html

      相关阅读
        发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

        • 王秀锋
          王秀锋

          航行自由只是美国霸权的一种借口

        • 櫻井孝宏
          櫻井孝宏

          你已经迷失自己

        • 赵瑞瑞
          赵瑞瑞

          真想开打就是误国呢

        热点图片
        拼命载入中...