none
button通知消息 RRS feed

  • 问题

  • (VC++2008)在非模态对话框上添加button然后右键“添加事件处理程序”增加了ON_BN_CLICKED(IDC_BTN_ADD, &CTestDlg::OnBtnAdd)消息;并在消息处理函数内写如下代码:

    void CTestDlg::OnBtnAdd()
    {
     // TODO: 在此添加控件通知处理程序代码
     if(!m_btn.m_hWnd)
     {
      m_btn.Create(_T("自动"),BS_DEFPUSHBUTTON|WS_VISIBLE|WS_CHILD,CRect(0,0,100,100),this,200);
      m_btn.ShowWindow(SW_SHOW);
     }
     else
      m_btn.DestroyWindow();
     MessageBox(_T("clicked消息响应"));
    }

    为什么按下添加的对应按钮该通知消息不响应?




    2012年10月3日 3:45

答案

全部回复

  • 为什么按下添加的对应按钮该通知消息不响应?

    你添加这个按钮的对话框是CTestDlg这个类的吗?会不会是添加的时候加错了类?

    再有可能是按钮的ID搞错了。


    Damon Zheng [MSFT]
    MSDN Community Support | Feedback to us

    2012年10月4日 6:31
    版主
  • 不应该出现这种问题啊

    ON_BN_CLICKED的上下文是怎样的


    新浪微博http://weibo.com/xianglitian,欢迎围观

    2012年10月6日 2:20
  • void CMyboleView::OnDialog()
    {
     // TODO: 在此添加命令处理程序代码

     CDialog* dlg=new CDialog;
     dlg->Create(IDD_DIALOG1,GetParent());
     dlg->ShowWindow(SW_SHOW);

    }

    虽然这里是申明了一个局部的指针,但并没有销毁,我想问题不应该是出在这里,而且ID号也是没有错的。OnDialog()代码如上所示.谢谢!

    如果将对话框申明为modal就好象下面一样,那个通知消息是响应的。

    void CMyboleView::OnDialog()
    {
    // TODO: 在此添加命令处理程序代码

    CTestDlg dlg;
     dlg.DoModal();

    }

    2012年10月6日 12:47
  • void CMyboleView::OnDialog()
    {
    // TODO: 在此添加命令处理程序代码

    CDialog* dlg=new CDialog;
    dlg->Create(IDD_DIALOG1,GetParent());
    dlg->ShowWindow(SW_SHOW);

    }

    是这个类。虽然这里是申明了一个局部的指针,但并没有销毁,我想问题不应该是出在这里,而且ID号也是没有错的。OnDialog()代码如上所示.谢谢!

    如果将对话框申明为modal就好象下面一样,那个通知消息是响应的。

    void CMyboleView::OnDialog()
    {
    // TODO: 在此添加命令处理程序代码

    CTestDlg dlg;
    dlg.DoModal();

    }

    2012年10月6日 12:55
  • CDialog* dlg=new CDialog;

    这句改成

    CTestDlg* dlg=new CTestDlg;


    新浪微博http://weibo.com/xianglitian,欢迎围观

    2012年10月7日 1:08