我想动态创建一个Button,并且在单击它时完成一定的操作请问该如何做?如何实现消息?

解决方案 »

  1.   

    先在对话框里随便搞个按钮,并把ID设为跟你动态创建的按钮ID一致.
    然后ctrl+w,把类名选为你动态创建的那个窗口类,然后添加消息映射就可以了
      

  2.   

    #define YOUR_BUTTON_ID   2003
    //创建
    CButton *pButton = new CButton;
    pButton ->Create("YourButton", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 
       CRect(10,10,100,30), pParentWnd, YOUR_BUTTON_ID);
    //影射
    BEGIN_MESSAGE_MAP(..)
    ON_BN_CLICKED(YOUR_BUTTON_ID,OnYourFunc)
    END_MESSAGE_MAP()void YourWnd::OnYourFunc()
    {
    //在单击它时完成一定的操作
    }
      

  3.   

    下面这个方法用于多个动态创建的控件
    BEGIN_MESSAGE_MAP
       ..... 
       ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON10, OnButtonClicked)
    END_MESSAGE_MAP()在.h中
    ......
    afx_msg void OnButtonClicked(UINT nID )
    DECLARE_MESSAGE_MAP().cpp中void CMyDialog::OnButtonClicked( UINT nID )
    {
    //通过判断id号来确定是哪一个按钮被按下!
    }
    关于ON_CONTROL_RANGE的详细内容,看MSDN