设为首页 - 加入收藏
当前位置:主页 > 365bet中国客服电话 > 正文

感谢multidocument子窗口问题

时间:2019-10-07 09:57 来源:365bet提款要多久 作者:365bet注册送35元 阅读:
展开全部
在MDI程序的情况下,辅助窗口是文档框架窗口,因此首先使用GetActiveFrame()来获取活动的辅助框架窗口,然后通过辅助窗口获取活动视图和文档。CMDIChildWnd * pChild; pChild =(CMDIChildWnd *)((CFrameWnd *)AfxGetApp() - m_pMainWnd)-GetActiveFrame();获取活动视图。CMyView * pView =(CMyView *)pChild-GetActiveView();获取活动文档。CMyDocument * pDoc = pChild-GetActiveDocument();注意:此方法可以在某些文档中获取视图指针。//获取活动子帧窗口。CMDIChildWnd * pChild =(CMDIChildWnd *)GetActiveFrame(); // o:CMDIChildWnd * pChild = MDIGetActive(); //用于获取活动子帧窗口的CMyView活动视图* pView =(CMyView *)pChild-GetActiveView(); 1
获取从视图类到文档类的指针在引用视图类中的文档类之前,请使用以下语句:CDocument * pDoc =(CDocument *)GetDocument();您可以稍后使用pDoc指针访问文档类。
2
获取指向文档类的类的指针CDocument类提供了两个函数Ge??tFirstViewPosition()和GetNextView(),用于定位视图类。注意:引用了GetNextView()括号中的参数,可以在值执行后更改。
GetFirstViewPosition()用于返回第一个视图位置(POSITION值,而不是视图类指针)。GetNextView()具有以下两个函数:返回指向视图类的指针,并通过引用入站POSITION类型参数的值来更改它。
显然,测试程序中只有一个视图类,因此要获得CTestView指针,只需要调用这两个函数一次(定义POSITION结构变量以辅助操作)有必要)。CView * pView; POSITIONpos = GetFirstViewPosition(); pView = GetNextView(pos);因此,您可以访问类C * View的pView指针。
执行一些语句之后,pos = NULL变量,当然没有下一个视图类,所以自然没有下一个视图类的POSITION。
但是,声称过于简单,并且没有多种多功能性和安全性功能。如前所述,如果要在某些视图中返回指向特定类的指针,则需要遍历所有视图类。
在确定类指针是否指向类的实例时,可以使用IsKindOf()成员函数来检查行(例如,pView-IsKindOf(RUNTIME_CLASS(CView)))。CView类
在上一个基础中,您可以获得指向任何类文档类的指针。
为方便起见,我们将其用作文档类的成员函数。它具有指示指针应指向哪个类的参数。
实施如下:结束while循环有三种可能性,因此我们使用视图类成员函数IsKindOf()两次来确定。
Pos为NULL。换句话说,没有下一个操作视图类。
pView符合要求。
3
1和2都满足。
这是因为GetNextView()函数将当前视图指针更改为视图位置并返回当前视图指针。因此,pos是下一个pView视图类的位置。pos == NULL和pView很有可能满足您的需求。
如果目标视图是最后一个视图,则它是最后一个视图类。
因此,需要两门考试。
使用此函数来跟随表单(使用CTestView指针作为示例):CTestView * pTestView =(CTestView *)GetView(RUNTIME_CLASS(CTestView)); RUNTIME_CLASS是一个宏,你可以理解它的作用:将类A的名称转换为CRuntimeClass。
由于相同的基类指针类型彼此兼容,因此还要考虑强制类型转换以用于安全功能。
尽管可能不需要这种类型的转换,但是可以避免一些问题。CView * CDocument:GetView(CRuntimeClass * pClass){CView * pView;}POSITIONpos = GetFirstViewPosition(); while(pos!
= NULL){pView = GetNextView(pos); if(!)
pView-IsKindOf(pClass))break;}if(!
pView-IsKindOf(pClass)){AfxMessageBox(ConntLocatetheView)。
; returnNULL;}returnpView;}


(责任编辑:admin)

推荐内容