我建立了两个不同的文档类,分别为Cmdidoc1和Cmdidoc2,并为它们分别建立了一个视图,分别为Cmdiview1和Cmdiview2。
请问如何实现如下的操作:
一、在类Cmdidoc1中,如何获得Cmdidoc2文档的指针?如何获得Cmdiview2的指针?
二、在类Cmdiview1中,如何获得Cmdidoc2文档的指针?如何获得Cmdiview2的指针?

解决方案 »

  1.   

    我先抛块砖,有玉的砸过来!
    在何时何地,你都可以通过以下方法精确的得到任何一个对象(Application,DocTemplate,Document,View,Frame)
    1。通过AfxGetApp()得到当前的App对象;
    2。通过AfxGetMainWnd()得到主窗口;
    3。通过CMDIFrameWnd::GetActiveFrame得到当前活动窗口;
    4。通过GetNextWindow()遍例所有的子窗口;(如果要得到你想要的子窗口,可以通过特定的成员变量来标志);
    5。通过CWinApp::GetFirstDocTemplatePostion()以及CWinApp::GetNextDocTemplate()的组合应用来遍历所有的DocTemplate对象,并且用CDocTemplate::GetDocString()来判断当前得到的文档莫板对象是哪个。
    6。通过CDocTemplate::GetFirstDocPosition()以及CDocTemplate的GetNextDoc()组合来遍历所有的该模板的文档对象,并用CDocument::GetDocTemplate()来得到文档模板,用CDocment::GetTitle() 或者GetPathName()来判断当前的文档是哪个。
    7。通过CDocuemt的GetFirstViewPositon()以及GetNextView()来遍历视图对象,一般通过访问View的成员变量来区别各个视图;通过CView::GetDocument()来得到文档对象;
    8。Frame->View: 通过GetActiveView方法;
    9。Frame->Doc:通过GetActiveDocument();
    10。View->Frame:GetParentFrame();
    11。View->Doc:GetDocuemt()//前面已经说了。
    12。Doc->View:前面说了;
    13。Doc->Frame:不知道有没有很直接的方法。