假设我对话框界面有几个Edit控件,我已通过OnCtlColor()将背景设置成蓝色,现在,我想实现一种效果,当要在某一Edit中输入数据时,鼠标点击后,该Edit的背景会变为白色,而当我又触发另一个Edit时,先前的背景变回蓝色,如何实现?

解决方案 »

  1.   

    响应WM_SETFOCUS和WM_KILLFOCUS两个事件,分别设置一下背景颜色,刷新就可以了The WM_SETFOCUS message is sent to a window after it has gained the keyboard focus. The WM_KILLFOCUS message is sent to a window immediately before it loses the keyboard focus
      

  2.   

    BRUSH  CXXXXDlg::OnCtlColor(CDC*  pDC,  CWnd*  pWnd,  UINT  nCtlColor)  
    {  
               HBRUSH  hbr  =  CDialog::OnCtlColor(pDC,  pWnd,  nCtlColor);  
               if  (CTLCOLOR_EDIT  ==  nCtlColor)  
                     {  
                                       if  (pWnd  ==  CWnd::GetFocus())  
                                               return  m_hWhiteBrush  
                                       else  
                                   return  m_hBlueBrush;  
                     }  
               return  hbr;  
    }