我编一个对话框的程序,其中有好几个子对话框,它们各自有一个自己的对话框类。在主对话框类中有些变量,现在我想在各个对话框中都能使用这些变量,而且使用完后还能对这些变量进行修改更新,然后主对话框又根据这些变量的新值做一些相应的操作,总的来说就是想使这些变量在各个对话框类中共享,有什么好的办法,谢谢

解决方案 »

  1.   

    嗬嗬,不久前刚完成这个问题,把在下的方法提出来仅供参考:
    假设我们有3个对话框,对应类CDlg1,CDlg2,CDlg3,每个类对应文件Dlg1.h、Dlg1.cpp;Dlg2.h、Dlg2.cpp;Dlg3.h、Dlg3.cpp;则首先在每个类的头文件开头部分,声明其他类:
    //This is Dlg1.h beginning
    class CDlg2;
    class CDlg3;
    ...........//This is Dlg2.h beginning
    class CDlg1;
    class CDlg3;
    ...........//This is Dlg3.h beginning
    class CDlg2;
    class CDlg1;
    ...........
    然后在每个类的实现文件中引用其他两个类的头文件:
    //This is Dlg1.cpp beginng
    #include "Dlg1.h"
    #include "Dlg2.h"
    #include "Dlg3.h"
    .....//This is Dlg2.cpp beginng
    #include "Dlg1.h"
    #include "Dlg2.h"
    #include "Dlg3.h"
    .....//This is Dlg3.cpp beginng
    #include "Dlg1.h"
    #include "Dlg2.h"
    #include "Dlg3.h"
    .....每个类中添加指向其他两个类的指针成员变量,在构造函数中赋值
    那么对于其余两个对话框的操作就可以通过指针来进行。
      

  2.   

    那楼上,我告诉你一个更绝的
    Dlg1.h
    Dlg2.h
    Dlg3.h
    -----可以合并成DlgX.h---.cpp文件同理,我做过。
     我用的方法是GetParent()得到父指针,然后用。
    主要是保持各个对话框中保持一直,数据更新的时候,刷到父对话框,再分别刷到子对话框
      

  3.   

    嗬嗬,受教了!
    本来是为了作用Dlg操作View和Doc类才想到这个方法的。
    顺便问一下,非模态对话框用GetParent()有时好像取不到父指针,是不是和Create()的参数有关系?