我在作一个基于对话筐的程序中用了edit组件,
1、请问要怎么实现设置edit的背景色和输入的字体。
2、在我的程序中有多个edit,我想在程序中实现用回车键代替tab键的功能,既在edit1中输入回车光标跳到edit2中,然后在edit2中输入回车,光标再跳到edit3中,依次类推直到最后一个edit时输入回车执行一个操作(如相当于点击确定按钮)。

解决方案 »

  1.   

    1.设置背景色重载OnCtlColor()函数,改变字体用MyEdit.SetFont()
    2.重载PreTranslateMessage()函数,处理回车键事件
    BOOL CMy111Dlg::PreTranslateMessage(MSG* pMsg) 
    {
      if( pMsg->message == WM_KEYDOWN ) 
    {
           if( pMsg->wParam == VK_RETURN )
              ::SetFocus(::GetNextDlgTabItem(m_hWnd,::GetFocus(),FALSE));
           return TRUE;
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  2.   

    前者可以自定义一个edit类的子类在里面添加支持。
      

  3.   

    定义子类太烦了,
    我知道这样可以。
    cedit是从cwnd派生的,
    有wm_char等消息。
      

  4.   

    用vb和delphi做界面真的是太简单了。
      

  5.   

    用OnCtlColor  设置编辑框颜色。
    响应PreTranslate消息
    加入:
        CWnd* pWnd = this->GetFocus();
        if(pWnd->GetDlgCtrlID() == IDC_edtName )
    if(lpmsg->wParam == 13)
    lpmsg->wParam = 9;
        
        return CDialog::PreTranslateMessage(lpmsg);
      

  6.   

    设置背景色重载OnCtlColor()函数,改变字体用MyEdit.SetFont()
    for example
     ……OnCtlColor()
    {
       if(m_youId==CTLCOLOR_EDIT)
       {
       pDC->SetBkColor(RGB(255,0,0);
       }
    }
      

  7.   

    问题1:
    响应WM_CTLCOLOR消息:
    if(nCtlColor ==CTLCOLOR_EDIT&&nCtlColor!=CTLCOLOR_LISTBOX)

        if( pWnd->GetDlgCtrlID() == IDC_EDIT1 )
        {
             pDC->SetBkColor(RGB(200,0,0));
             m_Edit1.SetFont();  // 
    return (HBRUSH) CreateSolidBrush(RGB(0,0,200)); 
        }
        return NULL;
    }
      

  8.   

    问题2:
    BOOL CMy111Dlg::PreTranslateMessage(MSG* pMsg) 
    {
      if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN)
        {
            NextDlgCtrl();
            return TRUE;
        }
        return CDialog::PreTranslateMessage(pMsg);
    }