需求:
   改变button按钮背景颜色问题描述:
1 有一个parent对话框资源
2 有一个child对话框资源
3 button资源在child对话框资源上
4 用child对话框的消息OnCtlColor,代码如下
    child::OnCtlColor
   {
        if (nCtlColor == CTLCOLOR_BTN )
    {
//list_log字体色 & 字体背景色
        pDC->SetTextColor(RGB(14,14,245)); 
        pDC->SetBkColor(RGB(235 ,235 ,235 )); 

        hbr =CreateSolidBrush(RGB(235 ,235 ,235 ));

    }
      return hbr;
   }
   无效果5 想到给button资源建个类MyButton(继承CButton,然后用OnEraseBkgnd画背景色),却发现无法关联资源。用 类向导,在选择 父类 为 CButton的时候,VC提示,CButton这个类不需要对话框资源。硬着头皮弄出来个MyButton类,建了个对象m_button,在 childDlg中m_button.SubClassDlgItem()关联资源,无效果,WM_BTNCLICK都响应不了。求解惑:
  VC中有没有一个文件类似于Resource.h这样,将资源和对应的类关联起来?我在类向导里,将Object ID选button资源,className里面选childDlg,只有两个消息,一个单击,一个双击。className选MyButton,消息一大堆。
我在childDlg和MyButton里都有单击相应函数(函数都是用类向导添加的,并非手动),[color=#FF0000]但是程序对单击事件的响应是调用childDlg的响应函数,请问,为什么会这样?如果我想让对单击事件的响应是调用MyButton里的响应函数,应当怎样?/[color]

解决方案 »

  1.   

    5 想到给button资源建个类MyButton(继承CButton,然后用OnEraseBkgnd画背景色),却发现无法关联资源。用 类向导,在选择 父类 为 CButton的时候,VC提示,CButton这个类不需要对话框资源。硬着头皮弄出来个MyButton类,建了个对象m_button,在 childDlg中m_button.SubClassDlgItem()关联资源,无效果,WM_BTNCLICK都响应不了。 手动输入就可以了
      

  2.   

    VC中有没有一个文件类似于Resource.h这样,将资源和对应的类关联起来?我在类向导里,将Object ID选button资源,className里面选childDlg,只有两个消息,一个单击,一个双击。className选MyButton,消息一大堆。
    我在childDlg和MyButton里都有单击相应函数(函数都是用类向导添加的,并非手动),[color=#FF0000]但是程序对单击事件的响应是调用childDlg的响应函数,请问,为什么会这样?如果我想让对单击事件的响应是调用MyButton里的响应函数,应当怎样?/[color]你点击button的消息响应函数写到你的MyButton类中
      

  3.   

    列举两种方法,前提是按钮风格增加BS_OWNERDRAW:1. 工程中增加一个自定义按钮类(自己写或者下载一个);
    2. 在按钮所在窗口中响应消息WM_DRAWITEM。