对话框有8个BUTTON,按下不同的BUTTON,会有不同的事件响应,现在把这些事件响应单独写入一个函数,该函数主要完成一个switch,现在问题是怎么判断按下的是哪个按钮,比如按下一号BUTTON和按下二号BUTTON返回不同的值,该用哪个函数得到这个值,然后用到switch里呢

解决方案 »

  1.   

    添加虚函数OnCommand
    BOOL CXXXDlg::OnCommand(WPARAM wParam, LPARAM lParam) 
    {
    // TODO: Add your specialized code here and/or call the base class

    if(HIWORD(wParam) == BN_CLICKED)
    {
    WORD wID = LOWORD(wParam);
    switch(wID)
    {
    case IDC_BUTTON1:
    AfxMessageBox("Button1");
    break;
    case IDC_BUTTON2:
    AfxMessageBox("Button2");
    break;
                    ……
    }
    }  return CDialog::OnCommand(wParam, lParam);
    }
      

  2.   

    用On_Control_Rangle宏可以把多个控件对同一个消息的响应映射到一个消息响应函数,它的用法是
    On_Control_Rangle(消息,控件1ID,控件2ID等待,消息响应函数)
    按钮有WM_LBUTTONDOWN消息吗?
      

  3.   

    afx_msg void OnButtonClicked(UINT nId);ON_CONTROL_RANGLE(BN_CLICKED, IDC_BUTTON_1, IDC_BUTTON_8, OnButtonClicked)void CXXDlg::OnButtonClicked(UINT nId)
    {
     int nIndex = nId - IDC_BUTTON_1;
     CString str;
     str.Format(_T("Index: %d"), nIndex); 
     AfxMessageBox(str);
    }
    注意button的ID号码要连续