如提
我现在有个类,类中有个onclick()事件.
我现在想在这个onclick()中去判断另一个类(对话框类)的一个按钮的onButton();
如果单击了这个按钮,在onclick()中会执行下面的程序.不知道说清楚没有,希望高手赐教,希望说的详细点!
类似下面.
CInterDlg interdlg; //interdlg.DoModal (); if(interdlg.DoModal () == IDC_ADD_RASTER)//IDOK)
{
::AfxMessageBox ("11111");
}
但这样写没反映~谢谢~

解决方案 »

  1.   

    DoModal的对话框无法在外部控制它,因为这个对话框已经接管了消息循环。应该在CInterDlg类的实现中来实现自我控制,比如设置一个成员变量代表要执行的操作:CInterDlg dlg;
    dlg.isPushButton = TRUE;
    dlg.DoModal();在CInterDlg的OnCreate中这样写:
    CDialog::OnCreate(...);...if (isPushButton == TRUE)
    {
      OnAddRasterBtnClick();
    }
      

  2.   

    非模态对话框可以控制,直接调用它的方法就行了。CInterDlg dlg;
    dlg.Create(...);
    dlg.ShowWindow(SW_SHOW);
    dlg.OnAddRasterBtnClick();
      

  3.   

    不是很清楚你的意思,看看我理解的对不对:你原本显示了一个对话框,在点击某一按钮时弹出另一个模态对话框,如果点击该对话框上的某个按钮,则关闭该对话框,然后回到前一个对话框类中执行特定的操作。
    如果是我理解的样子,你可以在CInterDlg类中响应按钮事件,调用EndDialog(IDC_ADD_RASTER),其它代码不变。
      

  4.   

    在 onButton()的类里放个bool变量
    onButton()之后就置成true然后在 onclick()的时候去读这个变量
    方案2: onButton()可以向 onclick()的类发送一个消息  来说我点过了然后就可以在onclick()类里随便怎么做了
      

  5.   

    Class B()
    {
      bool bFlag=false;
    }
    void B::onButton()
    {
      bFlag=true;
    }
    Class A()
    {
      B dlg;
    }
    void B::onclick()
    {
      if(dlg.bFlag)......
    }大概的思路
      

  6.   

    onButton()
    {
       CInterDlg interdlg; //interdlg.DoModal (); 
       if()
         {interdlg=IDC_ADD_RASTER;}
       else
         {}
        onclick(interdig);
    }onclick()
    {
      if(interdlg.DoModal () == IDC_ADD_RASTER)//IDOK) 
      { 
        ::AfxMessageBox ("11111"); 
       } 
    }