基于多文档应用程序,视类从CFromView继承,在应用类中定义了全局变量a(用于记录输入数据的个数),视类中定义了变量b用于得到a的值,并显示出来,假如现在输入了5个数据,此时a=5,b=5,在视图中显示的记录数是5,由于某种原因,此时需要检查数据是否正确,弹出对话框C,在C中有一个LIST控件,用于浏览数据,发现其中第4个数据有误,可以采取文件写的方式删除该数据,同时a--,此时应该a=4,b=4,显示记录数为4,现在的问题是,a已经发生变化为4,b的值却仍为5,显示的记录数也是5,如何在对话框中调用UpdateAllViews()函数或其他函数来刷新所有视图以显示正确的结果呢(为4)?

解决方案 »

  1.   


    MFC中你总是可以拿到主框架,拿到document,再调用UpdateAllViews就行了吧。因为有全局函数AfxGetApp,AfxGetMainWnd的帮助,你还愁拿不到吗?
      

  2.   

    你的b应该定义为a的引用:
    int& b=a;
    这样任意一个变了另一个也变
      

  3.   

    首先你的对话框要获得该视的实例指针或引用然后对该视发WM_PAINT消息,在视的OnDraw中处理视中b的显示
      

  4.   

    建议:
    你可以写一个这样的对话框的构造函数,给对话框添加一个成员变量记录视图指针。
    CMyDialog:;CMyDialog(CMYview *parent)
    {
    m-parent = parent;
    }
    在创建对话框时,构造函数的参数是视图的指针(比如 this)。
    那么在对话框的成员函数里就可以对视图的成员变量操作。
    需要注意的是视图的成员变量b要是public。