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

问题现象:
调用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帮你生成的)

最新文章

  1. 【FLUENT案例】01:T型管混合器中的流动与传热
  2. Windows7 + Ubuntu双系统安装过程记录
  3. 带连接池的netty客户端核心功能实现剖解
  4. [转] Making GTFS query more convenient
  5. textContent、innerText的用法,在文档中插入纯文本
  6. 继承虚函数浅谈 c++ 类,继承类,有虚函数的类,虚拟继承的类的内存布局,使用vs2010打印布局结果。
  7. 如何让Iconfont作用到content伪类中
  8. 获取API返回值
  9. -_-#【Angular】工具函数
  10. Qt Assistant 的配置文件qhp--->qch 和qhcp--->qhc详解与生成
  11. ICSharpCode.SharpZipLib.Zip
  12. myeclipse导入项目时出现Exploded location overlaps an existing deployment错误解决方法
  13. - Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as <script>, as they will not be parsed.
  14. 从源码角度简单看StringBuilder和StringBuffer的异同
  15. PHP全栈学习笔记2
  16. python随笔--复习专用
  17. Could not autowire. No beans of 'TbItemMapper' type found. less... (Ctrl+F1) Checks autowiring prob
  18. CAS 原理
  19. JavaScrip(二)JavaScrip语法基础
  20. 章节1:SQL语言简易入门

热门文章

  1. MySQL 分区知识点(二)
  2. LINUX CENTOS关机与重启命令详解
  3. CSS高度自适应 height:100%;
  4. 二维码的扫描和生成--第三方开源--ZXing
  5. mysql 关联关系
  6. How to install php 7.x on CentOS 7
  7. uuid 学习
  8. Reinforcement Learning Q-learning 算法学习-1
  9. kong插件官方文档翻译
  10. BZOJ4170:极光