在onctlcolor中加入如下代码 想改变edit1背景为红色 其他为绿色pDC->SetBkMode(TRANSPARENT);   if(pWnd == GetDlgItem(IDC_EDIT1))
{   
return HBRUSH(GetStockObject(RGB(255,0,0)));//红色
}
if(nCtlColor == CTLCOLOR_EDIT )
{   
return HBRUSH(GetStockObject(RGB(0,255,0)));//绿色
}
为什么edit1颜色也是绿色而不是红色呢?

解决方案 »

  1.   

    if(pWnd == GetDlgItem(IDC_EDIT1))
    改成用控件ID来判断试试
    if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
      

  2.   

    pDC->SetBkMode(TRANSPARENT);    if(pWnd->GetDlgCtrlID() == IDC_EDIT1)
    {   
    COLORREF   clr   =   RGB(255,0,0); 
    pDC-> SetBkColor(clr);           //设置黑色的背景 
    hbr   =   ::CreateSolidBrush(clr); 
    return   hbr;     //作为约定,返回背景色对应的刷子句柄 
    }
    if(nCtlColor == CTLCOLOR_EDIT )
    {   
    COLORREF   clr   =   RGB(0,255,0); 
    pDC-> SetBkColor(clr);           //设置黑色的背景 
    hbr   =   ::CreateSolidBrush(clr); 
    return   hbr;     //作为约定,返回背景色对应的刷子句柄 
    }
      

  3.   

    if(pWnd == GetDlgItem(IDC_EDIT1))
    ->
    改用ID判断或者用HWND窗口句柄来判断
    e.g
    if(pWnd->GetSafeHwnd() == GetDlgItem(IDC_EDIT1)->GetSafeHwnd())
      

  4.   

    这样就可以  但是不知道为什么pWnd == GetDlgItem(IDC_EDIT1)就不行?
      

  5.   

    这个不行 加个MessageBox进去都没有 根本没执行到里面