孙鑫老师的VC++视频课程中,Lesson10有一段源码:
if(pWnd->GetDlgCtrlID()==IDC_EDIT1)
{
pDC->SetTextColor(RGB(255,0,0));                              1
pDC->SetBkMode(TRANSPARENT);                                  2
// pDC->SetBkColor(RGB(0,0,255));              3
return m_brush;
}这个是要改变编辑框的文字与背景色,我电脑上只调用1,2句就可以了,没必要用第3条替换第2条。老师讲的要调用1,3条。

解决方案 »

  1.   

    原则上3行都要的,否则控件背景底色与文字背景不匹配,那很怪的,你把Edit的高度调高,观察那些没有文字的底部就能发现这个问题。
      

  2.   

       将 编辑框 拉大一些 , 以下 两种 写法 的 运行 效果区别 就 出来了:
    if(pWnd->GetDlgCtrlID()==IDC_EDIT1) 

      pDC->SetTextColor(RGB(255,0,0)); 
      pDC->SetBkColor(RGB(0,0,255));     
             
      return m_brush; 

    if(pWnd->GetDlgCtrlID()==IDC_EDIT1) 

      pDC->SetTextColor(RGB(255,0,0)); 
      pDC->SetBkMode(TRANSPARENT);
      return m_brush; 
    }
      

  3.   

    再怎么大也是一样的啊,我看孙鑫老师的编辑框也不大啊。
    请问MSDN上的原话是什么意思:
    To change the background color of a single-line edit control, set the brush handle in both the CTLCOLOR_EDIT and CTLCOLOR_MSGBOX message codes, and call the CDC::SetBkColor function in response to the CTLCOLOR_EDIT code.
      

  4.   

    pDC->SetTextColor(RGB(255,0,0));                              1 
    pDC->SetBkMode(TRANSPARENT);                                  2 
    pDC->SetBkColor(RGB(0,0,255));                                3 
    这三句话放在一起,我觉得第3句话没什么意义,您可以自己试试看
      

  5.   

    这个和你return后面值是有关系的