WEB开发网
开发学院软件开发VC 使用VC6.0实现窗口的任意分割 阅读

使用VC6.0实现窗口的任意分割

 2010-07-06 20:43:38 来源:WEB开发网   
核心提示:■无文档视图与文档关联视图之间的通信CView3和CView4都是不与文档相关联的,我们现在实现CView3与CView2的通信.正如前面所说,使用VC6.0实现窗口的任意分割(3),CView2只能安全的与CCuteFTPDoc通信,因此,CMainFrame* MainFrame=(CMainFrame*)this

■无文档视图与文档关联视图之间的通信

CView3和CView4都是不与文档相关联的。我们现在实现CView3与CView2的通信.正如前面所说,CView2只能安全的与CCuteFTPDoc通信,因此,CView3如果需要跟CView2通信,也必须借助于文档类。因此程序的关键是如何在CView3中获得文档的指针。视图类中没有这样的类成员可以用来直接访问文档类。但是我们知道在主窗口类MainFrame中我们可以获得程序的任意窗口类的指针。因此我们只要获得程序主窗口了的指针,就可以解决问题了。代码实现在CView3中访问CView2中的DoIt()方法。

CView3中的代码如下:

CMainFrame* MainFrame=(CMainFrame*)this->GetParent()->GetParent();

     CCuteFTPDoc* Doc=(CCuteFTPDoc*)MainFrame->GetActiveDocument();
     if(Doc!=NULL) Doc->DoIt();

     CCuteFTPDoc中的相应的处理函数DoIt()代码如下:

     CView2* pView2;
     POSITION pos;
     CView* pView;
     while(pos!=NULL)
     {
         pView=GetNextView(pos);
         if(pView->IsKindOf(RUNTIME_CLASS(CView2))==NULL)
         pView2=(CView2*)pView;
     }
     pView2->DoIt();

■无文档关联视图之间的通信

CView3和CView4都是不跟文档相连的,如何实现他们之间的通信呢。 正如我们在上面所说的那样,由于在主框架中我们可以访问任意的视图,因此我们的主要任 务还是在程序中获得主框架的指针。在CView3中访问CView4中的方法DoIt()。

CMainFrame* MainFrame=(CMainFrame*)this->GetParent()->GetParent();

     CView4* View4=(CView4*)MainFrame->m_wndSplitter1.GetPane(2,0);
     View4->DoIt();

到现在我们已经实现了CuteFTP的主窗口的框架并且能够实现他们之间相互通信的框架。 同样的我们可以实现其他的一些流行界面例如NetAnts,Foxmail的分割。

上一页  1 2 3 4 5  下一页

Tags:使用 VC 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接