rt ,我想自绘CComboBox的下拉框,
1.如何将里面的滚动条去掉?并且换上自己的滚动条 
2.它不是有一个黑色的框吗?我想把它黑色的框变成其它的颜色,还有支持圆角的形状,
  黑色的框变成其它的颜色 我之前试过一种方法,这种方法没效果,就是:
    a.利用GetComBoBoxInfo获取到下拉框的窗口句柄
    b.替换自定义的WINDOWPROC
    c.响应WM_NCPAINT绘制.大家有什么办法能解决上面的问题吗
  

解决方案 »

  1.   

    1.设置XP窗口样式可以去掉滚动条,要给下拉列表滚动条设置皮肤必须获得类名为"ComboLBox"的窗口句柄,可以使用HOOK
    2.那个黑色框实际上是一个ComboLBox类似于ListBox控件,你必须对它进行子类化才能重绘.要想改变它原有的外观那就只能子类化了.
      

  2.   

    typedef struct tagCOMBOBOXINFO {
        DWORD cbSize;
        RECT rcItem;
        RECT rcButton;
        DWORD stateButton;
        HWND hwndCombo;
        HWND hwndItem;
        HWND hwndList; //这个也就是下拉列表的句柄,要去掉滚动条可以把WS_VSCROLL样式去掉.
    } COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;
      

  3.   

    mynamelj 能提供一些代码线索吗。如果我子类化 CComboLBox的话应该如何子类化,用CListBox?还是其它的类? 貌似
    MFC中没有 CComboLBox这个类。
      

  4.   

    MFC中是没有CComboLBox这个类的,最直接的方法就是切换它的窗口过程然后处理它的绘制消息.
      

  5.   

    codeproject上有个不过是改listctrl的滚动条,combobox改滚动条应该也差不多,楼主可以看下
    http://www.codeproject.com/KB/list/skinlist.aspx
      

  6.   

    皮肤滚动条还是用我的吧,在CSDN资源里"SkinSB"
      

  7.   

    SkinSB 1.0 1.2 對於 ComboBox 的 Slider 都不正常,
    有沒有什麼方法可以讓它正常嗎?
                          Thanks
      

  8.   

    哈哈,楼上讲的都太复杂了,这个问题我遇到过,很简单,这样子做:把光标移动到combobox(事先已经拖到对话框上)的黑色下拉箭头位置(就是最右边),光标会变成上下形状,然后下拉,可以变得很长,然后运行就不会有滚动条咯~~就OK了,来分,哈哈。
      

  9.   

    这个问题我也遇到过,楼上讲的方法很复杂,其实很简单就能够解决!事先你已经拖一个combobox控件到对话框上面了,你把光标移动到combobox右边的向下黑色箭头的位置(最右边),然后光标就会变成上下拉 的形状你就下拉就好了,这样程序运行起来就不会有滚动条了,呵呵,绝对不会错了~~
      

  10.   

    这个问题我也遇到过,楼上讲的方法很复杂,其实很简单就能够解决!事先你已经拖一个combobox控件到对话框上面了,你把光标移动到combobox右边的向下黑色箭头的位置(最右边),然后光标就会变成上下拉 的形状你就下拉就好了,这样程序运行起来就不会有滚动条了,呵呵,绝对不会错了~~