//建立按钮
我会在运行时建立很多按钮 比如100个,如何写消息映射 让我新建的所有按钮都能得到事件响应 比如ON_BN_CLICKED

解决方案 »

  1.   

    用ON_COMMAND_RANGE宏来映射,或者响应WM_COMMAND消息自己来判断。
      

  2.   

    ON_COMMAND_RANGE?或者CButton btn[100];
      

  3.   

    动态创建按钮,最好使它们ID连续消息响应: 采用消息映射宏ON_CONTROL或者ON_CONTROL_RANGE(针对ID连续的控件)   
        
      #define   IDC_BUTTON_BEGIN 10001   
      #define   IDC_BUTTON_END 10010   
        
      定义函数   
      afx_msg   void   OnButtonClicked(UINT   nID);   
        
        
      在cpp文件的   
      END_MESSAGE_MAP()   
      这句前加上   
      ON_CONTROL_RANGE(BN_CLICKED,   IDC_BUTTON_BEGIN,   IDC_BUTTON_END,   OnButtonClicked)   
        
      void   CMyDialog::OnButtonClicked(UINT   nID)   
      {   
      ASSERT(nID   >=   IDC_BUTTON_BEGIN   &&   nID   <=   IDC_BUTTON_END);   
        
      switch(nID   -   IDC_BUTTON_BEGIN)   
      {   
      case   0:   
      ...   
      break;   
      case   1:   
      ...   
      break;   
        
        
      ...   
        
        
      case   9:   
      ...   
      break;   
      }   
      }   
      

  4.   

    恩 ON_COMMAND_RANGE可以实现,我想知道如何在响应函数里来判断是哪一个控件在响应?
      

  5.   


    这篇文章因该会有帮助.
    http://blog.csdn.net/smallfishff/archive/2007/11/14/1884671.aspx
      

  6.   

    void  CMyDialog::OnButtonClicked(UINT  nID)  //nID正在相应的Button的ID
    {  
       switch(nID  -  IDC_BUTTON_BEGIN) //减去起始Button的ID
       {
          ...
       }

      

  7.   

    谢谢谢谢 太热心了知道了 刚用MFC 太多不熟悉,需要多多学习哦