formview 对话框中设置编辑框背景

来源:互联网 发布:甲种本 知乎 编辑:程序博客网 时间:2024/05/20 12:49

响应 WM_CTLCOLOR 消息 

定义一个成员变量m_brush

HBRUSH COpDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

 // TODO:  在此更改 DC 的任何属性
 if(nCtlColor==CTLCOLOR_EDIT)
 {
  pDC->SetBkColor(RGB(0,0,255));   
  return m_brush;
 }

 else
  return hbr;
}

 

或者不定义成员变量

HBRUSH COpDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

 // TODO:  在此更改 DC 的任何属性
 if(nCtlColor==CTLCOLOR_EDIT)
 {
  pDC->SetBkMode(TRANSPARENT);
  return HBRUSH(GetStockObject(BLACK_BRUSH));
 }

 else
  return hbr;
}

 

对于只读编辑框来说不让其背景变灰可以

一、获取编辑框焦点改变为其它焦点

二、

  1.   为formview加一个成员变量m_strEdit,记录Edit的内容  
  2.   每次程序控制Edit内容变化后,都记录在m_strEdit中  
  3.   为Edit在formview中添加事件   EN_UPDATE   ,其中代码    
  CWnd   *Edit   =   GetDlgItem(IDC_EDIT1);  
  Edit->SetWindowText(str);      
  4.   这样当手工改变Edit内容时,将触发这个事件,恢复为原来记录的内容

三、可以直接捕获所有关于Edit控件的消息,让其直接返回

原创粉丝点击