//{{AFX_MSG_MAP(CExamView)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()afx_msg void OnButton1();如上面的例子,有没办法将控件的id:IDC_BUTTON1传递给消息响应函数OnButton1();
除了找微软修改MFC

解决方案 »

  1.   

    为什么要传递呢?GetDlgCtrlID就可以获得啊。
      

  2.   

    通过其他变量传或者用 ON_COMMAND_RANGE 
      

  3.   

    int GetDlgCtrlID(
      HWND hwndCtl   // handle to control
    );
      

  4.   

    ON_BN_CLICKED(, OnButton1)
    晕,你这种情况,当然只有 IDC_BUTTON1 的click会调用 OnButton1, 在 OnButton1 中当前控件的id当然就是 IDC_BUTTON1 
    如果给多个控件映射一个处理函数, 使用 ON_COMMAND_RANGE 
      

  5.   

    我想用一个消息响应函数响应N个动作(单击其他按钮也用这个函数响应),函数根据ID号的不同产生相应的操作,这样做也没什么作用,只是可以少写些响应函数。
      

  6.   

    如果消息响应函数只有一个,单击N个按钮都将调用此函数,那么我当然需要知道点击了谁,才调用的这个函数.如果有办法在函数中知道按的那个按钮的ID,这样虽然是调用同一个响应函数,但按不同的按钮产生的结果是不同的
      

  7.   

    这种需求,应该是各个按钮中处理不同的信息,而相同的部分做一个公共函数func(),所有按钮响应函数中都调用func,同时添加各自不同的处理代码
      

  8.   

    谢谢大家!
    skyxie的方法我试过了,很好,谢谢。
      

  9.   

    不好意思,说错了,是PlayItHart的方法是正解:
    ON_COMMAND_RANGE(BN_CLICK,ID_0,ID_9,OnFDFDFClick);   
    afx_msg   void   OnFDFDFClick(UINT   nID)   
    这里nID就是我要的。
      

  10.   

    不好意思,又搞错了
    回头试了下
    ON_COMMAND_RANGE
    ON_CONTROL_RANGE
    都可以
    澄清下,以免误导人skyxie,对不住了
    晕,分已经给了,有重新分配的办法吗?