以下是我的代码
HBRUSH CMyTestDlg::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);  //判断下是不是你要改的控件ID
if (nCtlColor == CTLCOLOR_STATIC)  //这里是重点.设断点跟踪,nCtlColor 的值永远是"3"(CTLCOLOR_BTN),我的Dialog上的控件都是从控件编辑器里放进去的,没有自己手动创建的,而且也不只有BUTTON,还有PICTURE,GROUPBOX,STATIC...等等..为什么这里一直都只取到CTLCOLOR_BTN..
{
if(pWnd->GetDlgCtrlID()==IDC_STATIC_TUSERNAME) 

pDC->SetTextColor(RGB(255,255,255)); 
pDC->SetBkColor(RGB(22,22,22)); 
}
}
return hbr; 
}
还有.我新建的一个工程,用同样的方法就可以成功将文字的的颜色和文字的背景色修改!但我自己的工程就一样是只取到CTLCOLOR_BTN  WHY???????
请帮帮忙!!先谢过了...

解决方案 »

  1.   

    设置断点后,继续运行程序时按钮又要重绘一次,又会触发OnCtlColor,在断点处暂停,当继续运行程序时,又会触发,如此循环,所以跟踪不到下一个控件的OnCtlColor.
      

  2.   

    TO : luohongming 
    我在我新建的工程下用同样的方法,设断点跟踪,nCtlColor的值就会改变哦.看来不是你说的这个原因.TO : my_girlf 
    我有对比过..我两个工程里控件的属性完全一样.除了GROUP 和 VISBILE 两个属性是TRUE 之外.其它的属性均为FALSE
    所以也排除两个工程中控件的属性不同的问题.虽然还没有解决,但是也谢谢上面两位了...
    会不会是因为我的对话框上的控件数量太多的问题呢.因为我发现跟踪之后.在所有的BUTTON响应过OnCtlColor之后,就又重头执行了!!郁闷啊.
    继续等待高手出现....