如题:
比如有两个button:
   button1: id 为ID_BUTTON1
   button1: id 为ID_BUTTON2
我在消息循环中加入
  ON_BN_CLICKED(ID_BUTTON1, OnButton)
  ON_BN_CLICKED(ID_BUTTON2, OnButton)按button1和button2都触发了OnButton(),
如果我要分辨出是那一个按钮出发OnButton()的,该如何做?
多谢指点!

解决方案 »

  1.   

    在函数里面通过参数来判断
    public sub dosomething(byref cmd as commandbutton)
         select case cmd.name 
              case button1
                   ....     
              case button2 
                   ....
         end select
    end sub
      

  2.   

    void CTestDlg::OnButton() 
    {
    CWnd *pWnd = GetFocus();
    int nID = pWnd->GetDlgCtrlID();
    }
    这样就可以获得button的ID号了。经过测试。
      

  3.   

    不好意思,没看清楚,还以为是vb呢?
    献丑了。
    :)不过VC也可以通过同样的方法来作吧
      

  4.   

    if(nID == IDC_BUTTON1)
    {
    }
    else if(nID==IDC_BUTTON2)
    {
    }
    一切OK!
      

  5.   

    楼上的办法如果按钮很多的话就很麻烦
    你把所有按钮的ID值先改成连续值
    比如IDC_BUTTON1 = 1001, IDC_BUTTON2 = 1002.. 以此类推.如果你是依次添加按钮的话,他们的值就是连续的, 你也可以直接修改include.h 文件使他们连续
    然后只要在消息循环中加入:
    ON_COMMAND_RANGE(IDC_BUTTON1, IDC_BUTTON2, OnButton)
    就可以了  ON_BN_CLICKED(ID_BUTTON1, OnButton)
      ON_BN_CLICKED(ID_BUTTON2, OnButton)
    都不需要了
    再将OnButton的定义改为; void OnButton(int nID);
    这样每次调用OnButton时, nID就是那个被按的按钮的ID号
      

  6.   

    ON_COMMAND_RANGE
    通常一系列的控件用楼上的方法很不错
      

  7.   

    const MSG *pMSG = GetCurrentMessage();
     
    if(pMSG->wParam == IDC_BUTTON1)
    {
    AfxMessageBox("111");
    }
    else if(pMSG->wParam == IDC_BUTTON2)
    {
    AfxMessageBox("222");
    }
      

  8.   

    void CTestDlg::OnButton() 
    {
    CWnd *pWnd = GetFocus();
    int nID = pWnd->GetDlgCtrlID();
             if(nID == IDC_BUTTON1)
             {
             }
             else if(nID==IDC_BUTTON2)
             {
             }
    }
    一切ok了