现在有一个主窗口MainDlg,MainDlg创建子窗口Dlg1,然后Dlg1又创建Dlg2,
如何在Dlg2中访问MainDlg中的public函数?还有一个问题,Dlg1创建Dlg2的代码是放在MainDlg中的,这样对不对啊?

解决方案 »

  1.   

    谁是谁的子窗口,不是看在哪里创建,而是看创建的参数。
    Dlg2中访问MainDlg中的public函数,可能不行,你可以在dlg1中写个函数,让dlg2访问dlg1,然后dlg1再访问MainDlg。这样也符合面向对象的编辑思想。
      

  2.   

    用AfxGetMainWnd(),前提是Dlg2.cpp中要#include MainDlg.hCMainDlg *pMain = (CMainDlg *)AfxGetMainWnd();
    pMain->XXX函数(...);
      

  3.   

    问题一:
    如果你是基于MFC的DIALOG程序,
    CMainDlg* Dlg=(CMainDlg*)AfxGetApp()->m_pMainWnd;
    然后就可以调用public函数。
    问题二:
    当然可以,但是这样代码会太乱了。