奇怪的问题,想了很多可能的理由,最终的答案竟然是一开始就被我否认了的一种可能!!

问题现象:
调用Shell_NotifyIcon,在Vista和Windows 7上可以正常显示托盘的Balloon ToolTips,但在XP下却不行,而且函数返回值和GetLastError都正常。
 
问题的原因:
1、有问题的系统版本声明:
 1 // 是具有运行应用程序所需功能的 Windows、Internet Explorer 等产品的

 2 // 最早版本。通过在指定版本及更低版本的平台上启用所有可用的功能,宏可以

 3 // 正常工作。

 4 // 如果必须要针对低于以下指定版本的平台,请修改下列定义。

 5 // 有关不同平台对应值的最新信息,请参考 MSDN。

 6 #ifndef WINVER                          // 指定要求的最低平台是 Windows Vista。

 7 #define WINVER 0x0600           // 将此值更改为相应的值,以适用于 Windows 的其他版本。

 8 #endif

 9 #ifndef _WIN32_WINNT            // 指定要求的最低平台是 Windows Vista。

 #define _WIN32_WINNT 0x0600     // 将此值更改为相应的值,以适用于 Windows 的其他版本。

 #endif

 #ifndef _WIN32_WINDOWS          // 指定要求的最低平台是 Windows 98。

 #define _WIN32_WINDOWS 0x0410 // 将此值更改为适当的值,以适用于 Windows Me 或更高版本。

 #endif

 #ifndef _WIN32_IE                       // 指定要求的最低平台是 Internet Explorer 7.0。

 #define _WIN32_IE 0x0700        // 将此值更改为相应的值,以适用于 IE 的其他版本。

 #endif

2、没问题的系统版本声明

 1 // 是具有运行应用程序所需功能的 Windows、Internet Explorer 等产品的
 2 // 最早版本。通过在指定版本及更低版本的平台上启用所有可用的功能,宏可以
 3 // 正常工作。
 4 // 如果必须要针对低于以下指定版本的平台,请修改下列定义。
 5 // 有关不同平台对应值的最新信息,请参考 MSDN。
 6 #ifndef WINVER                          // 指定要求的最低平台是 Windows XP。
 7 #define WINVER 0x0500           // 将此值更改为相应的值,以适用于 Windows 的其他版本。
 8 #endif
 9 #ifndef _WIN32_WINNT            // 指定要求的最低平台是 Windows XP。
 #define _WIN32_WINNT 0x0501     // 将此值更改为相应的值,以适用于 Windows 的其他版本。
 #endif
 #ifndef _WIN32_WINDOWS          // 指定要求的最低平台是 Windows 98。
 #define _WIN32_WINDOWS 0x0410 // 将此值更改为适当的值,以适用于 Windows Me 或更高版本。
 #endif
 #ifndef _WIN32_IE                       // 指定要求的最低平台是 Internet Explorer 5.0。
 #define _WIN32_IE 0x0501        // 将此值更改为相应的值,以适用于 IE 的其他版本。

17 #endif

小结:

这是我第一次遇到这个问题,而且花了差不多一个早上来找原因,要记下这个问题。

出现这个问题是有原因的,我用的vs2008,版本声明是IDE帮我自动生成的;而我使用的是windows7,测试这个功能也一直没问题,在我的vista虚拟机下测试也是对的,想不到的是XP下竟然有这个问题。

还是那句老话:要对自己的每一行代码负责。(哪怕是IDE帮你生成的)

托盘在XP下不能显示tooltip,在Vista和Windows7下正常的更多相关文章

  1. 【原创】webbluetoorh 在windows下无法显示搜索列表,在mac下正常的解决办法

    google webbluetooth在windows下不能弹出设备搜索列表提示“Web Bluetooth API is not available”,因为webbluetooth是google新推 ...

  2. DataGridView单元格内容自动匹配下拉显示

    页面显示数据使用的控件是ComponentFactory.Krypton.Toolkit中的KryptonDataGridView控件.在指定“商品”单元格中需要根据用户输入内容自动匹配数据库中商品信 ...

  3. C++ CEF 浏览器中显示 Tooltip(标签中的 title 属性)

    在 Windows 中将 CEF 集成到 C++ 客户端以后,默认是无法显示 tooltip 的,比如图片标签中的 title 属性. 实现的方式其实很简单,按下面的步骤操作就可以: 创建一个文本文件 ...

  4. JFreechart在linux下不显示及中文乱码问题

    一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉, 原因是jfreechart的在linux系统中需要访问java awt库 ...

  5. QAbstractItemView为截断的项显示ToolTip(在eventFilter函数里覆盖QEvent::ToolTip事件)

    在Qt中想要为QAbstractItemView中长度不够而使得内容被截断的项显示ToolTip,Qt官网有一篇文章介绍使用事件过滤器来显示太长的项,但是没有涵盖图标的情况.显示列头项太长的情况等等, ...

  6. QAbstractItemView为截断的项显示ToolTip(使用事件过滤)

    在Qt中想要为QAbstractItemView中长度不够而使得内容被截断的项显示ToolTip,Qt官网有一篇文章介绍使用事件过滤器来显示太长的项,但是没有涵盖图标的情况.显示列头项太长的情况等等, ...

  7. 完美解决,浏览器下拉显示网址问题 | 完美解决,使用原生 scroll 写下拉刷新

    在 web 开发过程中我们经常遇到,不想让用户下拉看到我的地址,也有时候在 div 中没有惯性滚动,就此也出了 iScroll 这种关于滚动条的框架,但是就为了一个体验去使用一个框架好像又不值得,今天 ...

  8. windows7下php5.4成功安装imageMagick,及解决php imagick常见错误问题。(phpinfo中显示不出来是因为:1.imagick软件本身、php本身、php扩展三方版本要一致,2.需要把CORE_RL_*.dll多个文件放到/php/目录下面)

    windows7下   php5.4成功安装imageMagick . (phpinfo中显示不出来是因为:1.软件本身.php本身.php扩展三方版本要一致,2.需要把CORE_RL_*.dll多个 ...

  9. css 图片内容在不同分辨率下居中显示(演示的图片宽度是1920px,当图片宽度大于显示屏的宽度时)

    1.img 图片内容在不同分辨率下居中显示(如果隐藏多余,在img外面套一个div  设定overflow: hidden.div的大小就是img显示区域的大小) <!DOCTYPE html& ...

随机推荐

  1. gym强化学习入门demo——随机选取动作 其实有了这些动作和反馈值以后就可以用来训练DNN网络了

    # -*- coding: utf-8 -*- import gym import time env = gym.make('CartPole-v0') observation = env.reset ...

  2. StratifiedShuffleSplit 交叉验证

    python中数据集划分函数StratifiedShuffleSplit的使用 文章开始先讲下交叉验证,这个概念同样适用于这个划分函数 1.交叉验证(Cross-validation) 交叉验证是指在 ...

  3. wiredtiger引擎性能——比levelDB更牛叉!

    WE'VE JOINED MONGODB!   We're proud to announce that MongoDB has acquired WiredTiger, and we've join ...

  4. Spring_总结_03_装配Bean(一)_自动装配

    一.前言 本文承接上一节:Spring_总结_02_依赖注入 在上一节我们了解到依赖注入的实质就是装配. 这一节我们来学习下装配Bean的相关知识. 二.Bean的装配机制 1.三种装配机制 Spri ...

  5. pcre函数详解

    PCRE是一个NFA正则引擎,不然不能提供完全与Perl一致的正则语法功能.但它同时也实现了DFA,只是满足数学意义上的正则. PCRE提供了19个接口函数,为了简单介绍,使用PCRE内带的测试程序( ...

  6. Redis的一些常用命令操作

    五种 基本数据 类型 以及操作命令操作命令的网址:http://doc.redisfans.com/ 一.在可视化界面上打开命令窗口 二.打开后就是这样子 三.命令操作---查询.删除.字符串 1.k ...

  7. git之切换分支出现的问题

    当在其他分支,如test分支开发的时候,新增了文件夹等目录结构.开发完成后,切换会master分支. 如果出现“Deletion of directory '***' failed. Should I ...

  8. Nginx报错 connect() failed (111: Connection refused) while connecting to upstream 的解决方法

    今天访问公司的网站突然报错,抛出一些英文,提示看一下Nginx的error.log日志: cd  /usr/local/nginx/logs/  看到了error.log ,下一步 tail -n 2 ...

  9. hihoCoder#1068(RMQ-ST算法)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在美国旅行了相当长的一段时间之后,终于准备要回国啦!而在回国之前,他们准备去超市采购一些当地特产——比如汉堡 ...

  10. POJ2976(最大化平均值)

    Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9329   Accepted: 3271 De ...