我查了一下windows的好多地方都用的是SysListView32控件,但是vb里面只有ListView控件,查了一下类名是ListView20WndClass,没有SysListView32的XP效果,请问如何调用SysListView32到自己的程序中,在论坛和GOOGLE搜索了都没找到,望高手赐教

解决方案 »

  1.   

    windows中的SysListView32对应vb的ListView
    //没有SysListView32的XP效果你要的是什么效果
      

  2.   

    拿listview的ColumnHeaders的颜色来说吧,listview控件只是系统默认的灰色,资源管理器中详细信息时SysListView32是白色的,而且鼠标移动时有XP的效果
      

  3.   

    你需要创建一个manifest 
    参见http://www.vbaccelerator.com/home/VB/Code/Libraries/XP_Visual_Styles/Using_XP_Visual_Styles_in_VB/article.asp
      

  4.   

    谢谢,这个方法试过了,在程序目录建一个manifest文件.
    对于Command,TEXTBOX都可以,但是LISTBOX就不行.我引用的部件是common controls 6.0[sp4)
    还有更高级 的部件吗
      

  5.   

    只有common controls 5.0才支持XP效果,6.0不支持!
      

  6.   

    好奇怪,为什么5.0支持,6.0不支持?[高级版本不如低级版本?)common controls 5.0
    common controls 6.0
    common controls-2 5.0
    common controls-2 6.0
    common controls-3 6.0
    这几个有什么区别?
    谢谢
      

  7.   

    jiangsheng(蒋晟.Net[MVP]) 提供的页面里的例子是利用common controls 6.0的就可以实现XP效果,我的就不行,疑问
    http://www.vbaccelerator.com/home/VB/Code/Libraries/XP_Visual_Styles/Using_XP_Visual_Styles_in_VB/article.asp
      

  8.   

    //jiangsheng(蒋晟.Net[MVP]) 提供的页面里的例子是利用common controls 6.0的就可以实现XP效果,我的就不行,疑问你到底是用listview还是listbox?
      

  9.   

    注意区别!WindowsXP中的comctl32.dll 6.0 与 VB的common controls 6.0 不是同一个东西。到了WinXP,为了支持统一的新外观,控件界面绘制都统一由UxTheme API集(这是WinXP新增API集)管理。所以微软特地作了comctl32.dll V6.0版,靠UxTheme绘制界面。只有设置好manifest文件后,Windows系统才会帮你绑定comctl32.dll V6.0版。VB的common controls 6.0中的ListView为了支持列表头图标,采用了列表头自绘(Custom Draw)技术。由于该控件出的太早,是直接用GDI函数画列表头按键的,所以是传统风格。而common controls 5.0压根没提供列表头图标功能,自然没有使用列表头自绘,表头由comctl32.dll自己绘制。VB的common controls XX控件都是对comctl32.dll提供的通用控制的封装。
    由于comctl32.dll提供的功能太多,为了避免ocx文件过大,于是分成几个部分,所以才有2、3(common controls-3 6.0等)。
    后边的版本号5.0代表这是VB5带的控件。到了出VB6时,由于用户感到common controls 5.0的功能太薄弱,所以又设计了6.0版的控件。
    VB的common controls 6.0是对comctl32.dll 4.71版最基础功能的封装(许多高级功能没封装进来),而现在WinXP中comctl32.dll的版本号都是6.0了。
      

  10.   

    不好意思,手误,是LISTVIEW
    谢谢zyl910的详细回答,不过还是有一些疑问:
    common controls 6.0是对comctl32.dll 4.71版最基础功能的封装(许多高级功能没封装进来)
    那么许多高级功能有封装到别的控件中吗?现在最高的版本是什么?再次感谢
      

  11.   

    Microsoft出的Common Control Ocx集的版本号最高的是6.0,既只支持comctl32.dll 4.71要想使用comctl32.dll的强大功能,得想写SDK程序那样:发消息控制窗口,并用子类拦截父窗口的消息以接受控件的通知消息vbaccelerator.com的站长是搞界面编程的,他写了一个封装comctl32.dll V6.0新功能的ListView控件:
    http://vbaccelerator.com/home/VB/Code/Controls/ListView/article.asp