button properties dialog-〉styles->select default button

解决方案 »

  1.   

    没错,将BUTTON设置成DEFAULT就可以了
      

  2.   

    default button 是指在对话框里,按回车就等于按按钮。想清楚了,不是哪一个edit控件。
      

  3.   

    问题是这样,里面有很多这样的 配对,我设置了 多个 default button ,每次回车, 只对最后一个有效, 
      

  4.   

    取消所有的default button,处理每个Edit的控件的EN_SETFOCUS消息(可以利用ON_CONTROL_RANGE宏),在其中给对话框发送DM_SETDEFID消息,将wParam设定为与此Edit关联的button的ID。
    另外补充一点:对话框中永远只有一个defualt button,即使你设定了多个default button,也只有一个是有效的。同时设定多个default button会导致上述方法的混乱。
      

  5.   

    当edit中的输入为回车[13]时,引发BUTTON_CLICK函数。
      

  6.   

    是的。您意思我明白, 我意思即是 :在编辑框里输完 信息后 ,回车,便调用所对应的OnButtonx()
      

  7.   

    怎么 EN_SETFOCUS消息 中给对话框发送DM_SETDEFID消息? 如何将wParam设定为与此Edit关联的button的ID?谢谢!
      

  8.   

    取消button的属性default button即可
      

  9.   

    //resource.h
    #define ID_DISP 20        //自己调整这个数字,以避免Button的ID同别人冲突
    ...
    #define IDC_EDIT1 101     //Edit的ID必须连续
    #define IDC_EDIT2 102
    #define IDC_EDIT3 103
    ...
    #define IDC_BUTTON1 IDC_EDIT1+ID_DISP   //与Edit1对应的Button
    #define IDC_BUTTON2 IDC_EDIT2+ID_DISP   //与Edit2对应的Button
    #define IDC_BUTTON3 IDC_EDIT3+ID_DISP   //与Edit3对应的Button
    ...//XXXDlg.h
    ...
    class XXXDlg
    {
      ...
    // Generated message-map functions
    protected:
        //{{AFX_MSG(CMyApp)   
            ...
        //}}AFX_MSG
        afx_msg void OnEditSetFocus(UINT nID);   //加入这句话
        DECLARE_MESSAGE_MAP()
    }
    ...//XXXDlg.cpp
    ...
    BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
        //{{AFX_MSG_MAP(CMyApp)
        ...
        //}}AFX_MSG_MAP
    ON_CONTROL_RANGE(EN_SETFOCUS, IDC_EDIT1, IDC_EDIT3, OnEditSetFocus)  //加入这句
    END_MESSAGE_MAP( )
    ...
    void CXXXDlg::OnEditSetFocus(UINT nID)   //添加这个函数
    {
      SendMessage(DM_SETDEFID, (WPARAM)(nID+ID_DISP), 0);
    }
    ...
      

  10.   

    在PreTranstlateMessage()中截获回车事件,在此事件处理程序中得到输入焦点所在的控件的ID,然后调用相应的OnButtonx()。
    仅仅为一想法,不知道行不行