解决方案 »

  1.   

    这个问题以前问过吧。
    给你一段简单的例子,方便理解class ViewBase
    {
    public:
    virtual void Init() = 0;
    };//在全局保存两个试图实例的指针
    ViewBase* g_pView1 = NULL;
    ViewBase* g_pView2 = NULL;class View1
    :public ViewBase
    {
    public:
    View1()
    { }
    void Init()
    {
    g_pView1 = this;
    }
    };class View2
    :public ViewBase
    {
    public:
    View2()
    { }
    void Init()
    {
    g_pView2 = this;
    }
    };
    好了,试图创建后两个试图的指针都初始化了,全局的指针你在哪都可以用了。想怎么调用还不简单。
      

  2.   

    //遍历所有的视图
    POSITION pos = GetFirstViewPosition();
    while (pos != NULL)
    {
    CView* pView=GetNextView(pos);   
    if( pView->IsKindOf(RUNTIME_CLASS(testView)))//这里的testView就是要做操作的视图的名字
    {
    CVehicleInpectionStickersDetectionDemoView *myView = (CVehicleInpectionStickersDetectionDemoView*)pView;
           myView->OnUpdate();//执行一个该视图中的函数,函数的内容就是修改视图中控件的一些内容来判断是否获得视图指针成功
    }

    } http://blog.csdn.net/xianglifighter/article/details/28851443
      

  3.   

    你是MDI还是SDI(+CSplitterWnd拆分了视图框架窗口) ??
      

  4.   

    1、使用全局对象指针
    2、在CMFrame中通过GetFirstViewPosition/GetNextView遍历view