非模式对话框A建立非模式对话框B,B建立非模式对话框C,ABC均不销毁。C建立非模式对话框D,D销毁时建立非模式对话框E,现在想通过E上的控件的操作访问并修改C对话框中的变量。
   我在C创建D之后,将D中创建的C的指针与C的this对应,D就可以访问并修改C中的变量,这没有问题。但是现在我想通过E来访问C就有问题了。我思考了几种方案,但是自己不会实现,麻烦各位大虾指点一下!
1、C直接建立D和E,建立时隐藏E,将E中C的指针与C的this对应。
问题:不会在D销毁时显示E
2、在D创建E后,E直接创建C的指针,再对C进行操作。
问题:不会得到C的指针,是不是在h文件中直接创建一个就行?这个直接创建的指针能和原来的C建立联系吗?C和E没有任何关系。试了一下,编译通过,运行时出错。
3、我在C中将E设为友元,E直接创建C的指针,但是还是有问题。编译通过,运行时出错。

解决方案 »

  1.   

    在E中创建c的指针(定义一个public类型的指向C的指针m_pdlgC):
    在D中创建E时:dlgE e;
    e.m_pdlgC = m_pdlgC; //m_pdlgC是D中定义的指向C的指针
    e. .....
      

  2.   

    zottff() 说得对,已经通过。谢谢!给你50分行吗?
    希望能再解释一下这方面的运行机制!必需要这样一步一步的传指针吗?有没有什么更好的方法?
      

  3.   

    想不传递指针,那么只能在app中定义了,但是我感觉这样不好3、我在C中将E设为友元,E直接创建C的指针,但是还是有问题。编译通过,运行时出错。
    -----------------------
    指针必须指向实例后才能使用