重载虚函数DrawItem(),这个我知道,但是这个函数怎么用啊!
1。我以对话框模式编的函数(MFC)、有很多button(20多个),我要分别改变这些button的颜色,即,每个button一个颜色。我应该怎么做呢?
2.picture这个空间怎么动态加载图片呢?有20多长图片,(格式现在还不清楚,不过我可以用图片处理器转换)我想按照不同的环境显示不同的图片。暂时就这些问题,谢谢各位参与!

解决方案 »

  1.   

    VC6.0下面的话可以试下用这个类CButtonST,它基本能实现你要的功能...
      

  2.   

    在可派生的基类里,我只能找到CBUTTON 这个类。CButtonST找不到啊!
      

  3.   

    通过类向导派生,在可派生的基类里,我只能找到CBUTTON 这个类。CButtonST找不到啊!
      

  4.   

    CButtonST是第三方类库
    http://www.codeproject.com/KB/buttons/cbuttonst.aspx?fid=111&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=226&select=428853
      

  5.   

    楼上正解 CButtonST很不错的 使用方法很简单 你在使用一个Button前先对其用CButtonST进行声明就可以啦
      

  6.   

    1。你自己定义一个CButton的继承类,然后编写自己的DrawItem函数,记得要使你的Button有BS_OWNERDRAW这个风格,你可以在你的类例加一个变量记录button颜色,这样可以给每个button不同的颜色
    2. 调用SetBitmap这个函数动态加载
      

  7.   

    楼上关于1.能再说的清楚一点么?
    我是建了一个类重载了DrawItem()函数,但是怎么让每个BUTTON都有自己的颜色呢?
      

  8.   

       在你新建的类中增加一个变量保存颜色信息,添加一个函数可以设置这个变量的值。在DrawItem()函数使用这个变量改变Button颜色
      

  9.   

    但是怎么能知道这个颜色是赋给哪个BUTTON的呢?
      

  10.   

    可以在你的Button类里加入两个函数:
    1. void SetColor(COLORREF clr); clr赋给你的颜色变量
    2. COLORREF GetColor() const;
    就可以了,然后在DrawItem使用这个颜色来画背景
      

  11.   

    你派生CBUTTON后,每一个实例化对象就是一个独立的实例,所以里面的颜色变量也是独立的.因此你就能独立指定每个BUTTON的颜色了,例如:
    CMyButton mybtn;
    mybtn.myRGB=RGB(XXX,XXX,XXX);
    mybtn.draw(); //如果指定了要自动再刷新的话...调用自己的函数,否则系统可以自动刷新.
    不过,还是使用CButtonST这个第三方类库方便:
     
    http://www.codeproject.com/KB/buttons/cbuttonst.aspx?fid=111&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=226&select=428853