一个对话框类的OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)函数如下:
HBRUSH CTimeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);         ... if ((nCtlColor == CTLCOLOR_BTN)&&(pWnd->GetDlgCtrlID() == IDC_BUTTON1))
{
                  ...
}
if ((nCtlColor == CTLCOLOR_BTN)&&(pWnd->GetDlgCtrlID() == IDC_BUTTON2))
{
                  ...
}
         ...
return hbr;
}
我在这个类的另外一个函数中调用OnCtlColor()函数,调用如下:
OnCtlColor(GetDC(), this, NULL);
我需要达到的效果是:执行OnCtlColor函数,并进入第一或第二个if循环。请问调用时参数应如何设置?另:如果大家有简单好用的彩色类似edit控件希望推荐之。谢谢!

解决方案 »

  1.   

    请问调用时参数应如何设置?发送消息 WM_CTLCOLOR 就可以了啊。
      

  2.   

    to:HongHuer(痛苦:我什么都不懂) 
    发送WM_CTLCOLOR消息时如何确定进入函数后是否会进入第一、二个IF语句或是根本就不进入呢?!
      

  3.   

    自己添加一个int成员变量来标记各种情况
      

  4.   

    在这个类的另外一个函数中调用OnCtlColor()函数,调用如下:
    OnCtlColor(GetDC(), this, NULL);
    我需要达到的效果是:执行OnCtlColor函数,并进入第一或第二个if循环那为何最后的参数是NULL,而不是CTLCOLOR_BTN?
      

  5.   

    to:demetry(大松) 
    能详细一点儿吗?不太明白什么意思。
      

  6.   

    在这个类的另外一个函数中调用OnCtlColor()函数,调用如下:
    OnCtlColor(GetDC(), this, NULL);
    我需要达到的效果是:执行OnCtlColor函数,并进入第一或第二个if循环第二个参数为何不是GetDlgItem(IDC_BUTTON1)或GetDlgItem(IDC_BUTTON2)?