我用 MFC 建了一个单文档的程序;
并自己添加了两个从CFormView继承的类 ViewA 和 ViewB;
ViewA有一个成员 name,在其ViewA自身的函数里给name赋值.问题:
然后我想在 ViewB 的一个 函数里 调用 ViewA 的成员 name,
我该如何办?我曾经尝试用Doc类 作为 之间媒介,在Doc类里定义一个变量nameDoc,
在ViewA里给nameDoc赋值,ViewB里得到Doc类里的nameDoc的值,
但是 我得不到从ViewA类赋的值,可能 开始就没有写进去.
不知道怎么 关联 ViewA 和 Doc 类?

解决方案 »

  1.   

    在ViewA里给nameDoc赋值,ViewB里得到Doc类里的nameDoc的值
    是通过GetDocument()得到的指针操作的吗?
    View在Create的时候连接Document了吗?
      

  2.   

    你的程序是不是单文档多视图(两个从CFormView继承的视图),视图和文档本来就是关联起来的啊。
    视图里有GetDocument()能得到文档指针,就可以访问文档的公有成员了(ViewA可以修改nameDoc);(当nameDoc被修改了)文档中调用UpdateAllViews()可以通知所有视图,每个视图通过OnUpdate()响应文档的修改通知(ViewB在该函数中获取nameDoc变量)
      

  3.   

    如果在app的InitInstance()中初始化文档模板时,关联了文档视图就可以采用以上方法
    手动关联或分割视图也可以采用以上方法
      

  4.   

    to:  Mackz(在相互) ( ) 信誉:104 我用的是GetDocument()函数得到的。to:  回复人: alaisalaix(流水落花春去也,天上人间) 
    ViewA 和 ViewB 都是在MFC框架生成之后才添加进去的。也就说 这两个类并没有和Doc类关联起来。
      

  5.   

    我后来尝试着 将ViewB 声明为 ViewA 的友员类,
    然后在ViewA 里定义一个ViewB 类指针,
    并在ViewA的那个函数里 通过ViewB 类指针调用ViewB 的函数。ViewA.name就通过形参传过去了,
    在调试过程中,发现值 是已经传过去了,但是执行却出现了错误。