准备工作:用vc2005或者更高创建一个mfc对话框程序,弄了一个最简单的按钮类,继承自CButton,给他添加一个CToolTipCtrl问题现象:1.鼠标移动到按钮上,会显示之前设置的tooltips,反复移动移出,tooltips都有效
          2.然后按一下按钮,tooltips消失,再也不会出现最开始以为是自己的Button重载的有问题,就拿来我的代码跟CButtonST反复验证,删到只剩下底裤了,还是存在问题……最后确定问题是2005自动生成的stdafx.h中的manifest导致,关键的就是这一句:
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")加上这一句话,编译出来的exe,默认在winxp环境的xp风格主题模式下,exe有一个xp的效果;
如果删了这一句话,那么编出来exe在任何win主题下,都是windows经典的界面跑题了,问题是,加上xp风格后,tooltips在按钮中,仅作用一次,按钮被按下后,tooltips就无效了!!灰常无奈啊提问:如何让xp风格下,tooltips按钮功能正常使用,不改我的button(改button的确能解决问题,但是这不是产生问题的根源)200分奉上

解决方案 »

  1.   

    不用xp风格按钮有焦点的时候tip正常?
      

  2.   

    那就用别的类型封装好的Button类,如CButtonST等,然后使用xp的manifest风格编译,看是否有问题,按理这些第三方类库的最新版本能够支持vs2005的
      

  3.   

    请问楼主代码是不是Unicode类型,而manifest风格默认编码是UTF-8
      

  4.   

    不用xp风格按钮有焦点的时候tip正常?
    答复:是的那就用别的类型封装好的Button类,如CButtonST等,然后使用xp的manifest风格编译,看是否有问题,按理这些第三方类库的最新版本能够支持vs2005的
    答复:朋友没有仔细看我的问题描述,我就是拿buttonST做的分析,只要加上了xp的mainfest,tooltips就有问题,buttonST的代码中stdafx.h中没有xp风格,所以tooltips是始终有效的,加上了mainfest一样存在问题请问楼主代码是不是Unicode类型,而manifest风格默认编码是UTF-8
    答复:我的工程的确是Unicode的,开发环境是vc2005,如果mainfest默认的是utf-8,那这个问题有办法解决吗?
      

  5.   

    我做了一个最精简的demo例子,放在了下载中,如果有人感兴趣,但是不想写代码,可以用这个代码编译一下,在vc2005或者更高的版本可以编译大家只要更改stdafx.h中关于mainfest.h的代码段注释就可以看到问题了http://download.csdn.net/source/2465438
      

  6.   

    环境:VS2005
    WIN32工程测试了下,未发现LZ所述现象。
      

  7.   

    环境:VS2008,Win7
    LZ的工程测试了下,未发现LZ所述现象。
    是否注释都一样.点击按钮和未点击一样.都能显示.
      

  8.   

    很奇怪,我在家里用win7+vs2010编译了一下,问题也不出现了,但是我在公司的开发环境保证存在这个问题难道是不同的编译环境有不同的结果?我周一上班后,再试试看我周五在公司的办公用机上,这个现象100%必先的,真是诡异啊
      

  9.   

    问题的确存在,在开发环境是winxp+vc2005的时候,这个问题的确存在但是在vista和win7下正常继续关注,等待明白人解释
      

  10.   

    问题的确存在,在winXP+VC2005上,我试了4台这样的开发环境,这个问题的确存在!!很严重的问题,按钮的tips不能只能看不能碰吧?一碰就没了的tips还是tips么?这里也有人问过相同的问题
    http://topic.csdn.net/t/20051107/13/4376443.html说自己机器上没问题的,附带上运行环境,win7就不用说了,win7下这个问题的确不存在,我说的WinXP