此函数要求返回的HBRUSH有什么用呀。我使了一个虽便找一个HBRUSH都可以呀,但结果没什么变化呀!!!这是我的函数:
HBRUSH CEx06aDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if(nCtlColor == CTLCOLOR_EDIT) {
pDC->SetBkColor(RGB(255, 255, 0));
//pDC->SetTextColor(RGB(255, 0, 0));
return m_hYellowBrush;/* return m_hRedBrush;//如果用这个的话,好像也没有什么变化呀!!*/ } if(nCtlColor == CTLCOLOR_DLG) {
pDC->SetBkColor(RGB(255, 0, 0));
return m_hRedBrush;
          /* return m_hYellowBrush;//如果用这个的话,好像也没有什么变化呀!!*/
}
return hbr;
}
其中m_hRedBrush和m_hYellowBrush是我在初始化时定义的如下:
m_hYellowBrush = CreateHatchBrush(HS_FDIAGONAL, RGB(255, 255, 0));
m_hRedBrush = CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));那么返回的HBRUSH到底能在哪看到效果呢?

解决方案 »

  1.   

    我使用怎么都有效,
    需要指出的是画刷是给整个控件的背景用的,其覆盖面为这个控件;
    而pDC指定的背景颜色只在pDC的绘制范围有效,一般会把其范围内控件背景遮住。
    HBRUSH m_hRedBrush;//这些变量是在类头文件中定义的吗?
      

  2.   

    HBRUSH m_hRedBrush;
    是在头文件里定义的!!
    可是我把它们换成别的什么但结果都是一样啊!!
      

  3.   

    初始化时换成如下语句就可以了

    m_hYellowBrush = CreateSolidBrush(RGB(255,255,0));
    m_hRedBrush = CreateSolidBrush(RGB(255,0,0));