....
m_edt_xxx.SetFoucs();....
在edit里面输入数字并敲回车
if(GetDlgItemInt(....)>num)
{
    m_btn_xxx.SetFoucs
}这应该放到哪里啊?

解决方案 »

  1.   

    自己做一个派生类,从CEdit派生过来。然后在类里面响应回车键消息。同时将需要SetFocus的控件指针传递给这个派生类的成员变量,当收到回车键消息时就可以操作了。
    示例代码:
    class CMyEdit : public CEdit{
    CButton *m_pDoBtn;
    CMyEdit()
    {
    m_pDoBtn = NULL;
    }
    void DoReturn()
    {
    if(m_pDoBtn != NULL)
    m_pDoBtn->SetFocus();
    }
    }
    void CMyEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    // TODO: Add your message handler code here and/or call default
    if(nChar == VK_RETURN)
    DoRetusn();
    CEdit::OnKeyDown(nChar, nRepCnt, nFlags);
    }CMyEdit m_myEdit;
    m_myEdit.m_pDoBtn = &m_btn_xxx;
      

  2.   

    可以在对话框的PreTranslateMessage()中。
      

  3.   

    二楼的能稍微看懂点,还没试过
    三楼的方法好像很常用,但我在PreTranslateMessage()中,只能做pMsg->message的判断,又如何去判断nChar呢。刚刚入门,请楼上说的详细点啊,万分感谢还有就是现在有这个情况,在Dialog的OnKeyDown()中过程没有执行就跳到默认的IDOK的响应了,去掉OK button的default,乃至删掉它,注释BeginMessage…………等等里面的OnOK,敲回车,程序就over了