两个对话框类A和B,在A中通过DoModal调用B,同时将当前指针传过去,如:
CADlg theDlg(this,....);
theDlg.DoModal();问题:我在B中要修改A的一个属性,怎么通过this指针修改呢?非常感谢!

解决方案 »

  1.   

    最常用的办法是:在B中申明一个A类的对象,然后用a.属性=""
    但这种方法已经被排除,哪位能说一下其他方法啊,非常感谢!
      

  2.   


    类B的构造函数如下:pParent就是传过来的A指针,怎么利用pParent来修改A的属性呢?下一步该怎么做?PolicyDlg::CPolicyDlg(CWnd* pParent ,PCExpertEventManager pExpertEventManager, CAMActionStrObjMap& ActionsMap,EVENT_TYPE AlarmID,UINT ActionIndex, CMap<UINT, UINT, CString,CString&>* pAclMap /*= NULL*/)
    :m_ActionsMap(ActionsMap),CDialog(CPolicyDlg::IDD, pParent)
    {
    //{{AFX_DATA_INIT(CPolicyDlg)
    //}}AFX_DATA_INIT
       
    m_pExpertEventManager = pExpertEventManager;
    m_AlarmID = AlarmID;
    ....
    }
      

  3.   

    将pParent强制转换为A类对象的指针,通过调用A的成员函数修改。
      

  4.   

    A并非是B的父类。为何你不能记录A对象的指针呢?
      

  5.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=203350
      

  6.   

    各位大侠能不能说具体一点呢,好急啊
    还是不行,在B类中引用A类时编译通不过,我加了#include "A.h"
    可就是不识别A
      

  7.   

    还是不行,在B类中引用A类时编译通不过,我加了#include "A.h"
    可就是不识别A
    ==怎么加的?
    将工程发到[email protected]。马上搞定
      

  8.   

    这是A类部分头文件,我定义了一个布尔变量:m_bChanged;
    class CPolicyManagement : public CSkinDialog
    {
    // Construction
    public:
    CPolicyManagement(CWnd* pParent,  PCExpertEventManager pExpertEventManager,UINT nAutoFocusPolicyId=-1,bool bConsoleMode=false,LPCTSTR pProfileName=NULL, CMap<UINT, UINT, CString, CString&>* pAclMap= NULL);   // standard constructor
    ~CPolicyManagement();   // standard destructor
    ....public:
       BOOL m_bChanged;}在A类中一个函数:
    void CPolicyManagement::OnThresholdDblClk(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_GRIDVIEW* pNMGridView = (NM_GRIDVIEW*)pNMHDR;
    if (pNMGridView->iRow > 0)
    {
    CPolicyDlg PolicyDlg(this,m_pExpertEventManager,m_ActionsMap,m_CurSelEventID,pNMGridView->iRow-1, m_pAclMap);
    PolicyDlg.DoModal();
    DisplayCurrentEvent();
    }}
    目标很简单,在B类中修改A的属性m_bChanged;但我确不能初始化A的实例void CPolicyDlg::OnOK() 
    {
    }非常感谢!
      

  9.   

    目标很简单,在B类中修改A的属性m_bChanged;但我确不能初始化A的实例
    ===晕!B类中不需要初始化A类的实例
      

  10.   

    //dlg1.h
    public:
        m_str;//dlg1.cpp
    #include "dlg2.h"
    Cdlg1::OnButton1()
    {
         Cdlg2 dlg2;
         dlg2.m_pdlg1 = this;
         if(dlg2.DoModal() == IDOK)
         {
               m_edit1.SetWindowText(m_str);
         }
    }//dlg2.h
    class Cdlg1;
    class Cdlg2 : public CDialog
    {
       .....
    public:
       Cdlg1 *m_pdlg1;
    }//dlg2.cpp
    #include "dlg1.h"
    Cdlg2::OnOK()
    {
       m_pdlg1.m_str = "123";
       CDialog::OnOK();
    }