万星星@豌豆荚 欢迎加入我们
一个吃软饭的男人!!!!!我只想写程序####
微博:http://weibo.com/wanlianwen
posts - 172,  comments - 1253,  trackbacks - 0

MS的bug???

关于tooltip的定义:
typedef struct tagTOOLINFOW {
    UINT cbSize;
    UINT uFlags;
    HWND hwnd;
    UINT_PTR uId;
    RECT rect;
    HINSTANCE hinst;
    LPWSTR lpszText;
#if (_WIN32_IE >= 0x0300)
    LPARAM lParam;
#endif
#if (_WIN32_WINNT >= 0x0501)
    void *lpReserved;
#endif
} TTTOOLINFOW, NEAR *PTOOLINFOW, *LPTTTOOLINFOW;

当定义_WIN32_WINNT >= 0x0501后结构体大小是48,此时通过api操纵tooltip时提示无法显示出来。我查看了mfc代码,而mfc没有使用该结构体而是使用自己定义的结构体绕过该问题。在codeproject上查找到一个类似的问题,无答案。我尝试了很多办法,发现TOOLINFO的flag设置为:m_ToolTip.uFlags = TTF_SUBCLASS;或许可以解决问题,但是不是很使用我现在的情况。现在我的解决办法是强制把cbSize设置为44,解决了问题,但是感觉很可怕。不知是否有更好的解决方法。
posted on 2007-07-23 14:19 万连文 阅读(1687) 评论(2)  编辑 收藏 引用 所属分类: 乱七八糟

FeedBack:
# re: 这个bug有点难度
2007-07-23 14:38 | 万连文
方法一:sizeof(TTTOOLINFOW) - sizeof(void *)

见:http://hi.baidu.com/umu618/blog/item/811e69d01e9bf08fa0ec9cb7.html  回复  更多评论
  
# re: 这个bug有点难度
2007-10-24 09:20 | UMU
您也遇到了啊,看来真是微软的 bug  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


简历下载
联系我

<2007年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(66)

随笔分类

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜