VC 和 MFC 的一些常见问题
2007-03-30 21:32:12 来源:WEB开发网核心提示: 如何在MDI程序中得到所有的视图?你必须用一些文档中没有记载的函数:CDocument::GetFirstViewPosition(); // DOCCORE.CPPCDocument::GetNextView(); // DOCCORE.CPPCMultiDocTemplate::Get
如何在MDI程序中得到所有的视图?
你必须用一些文档中没有记载的函数:
CDocument::GetFirstViewPosition(); // DOCCORE.CPP
CDocument::GetNextView(); // DOCCORE.CPP
CMultiDocTemplate::GetFirstDocPosition(); // DOCMULTI.CPP
CMultiDocTemplate::GetNextDoc(); // DOCMULTI.CPP
你还需要与CWinApp的成员m_templateList打交道。
注意:在MFC 版本4.0中已改变。现在已经有一个叫CDocManager的类可以帮助你显示所有的视图和文档。请参考《MFC Internals》获得更详细的信息。
如何建立一个可用鼠标拉动的CScrollView类
在CIS上从MSMFC库下载AUTOSV.LZH。这个程序告诉你如何实现一个辅助消息循环来管理鼠标的活动,并提供了钩挂来对代码进行定制。这是一个免费软件。
一定要用视图/文档结构吗?
MFC并不一定要求你使用文档/视图结构。查看HELLO、 MDI和HELLOAPP例子―它们就没有用那种结构。大多数MFC特性都可以在非文档/视图应用程序中得到运用。但是当你不用文档 / 视图结构时,你确实会失去一些特性,例如打印预览和许多OLE特性。
如何得到当前文档?
请详细参阅"如何得到当前视图?"章节。
文档何时被析构?
在SDI程序中,程序退出后文档就被删除。在MDI程序中,与该文档相关的最后一个视图关闭时文档就被删除。为了在SDI和MDI中同时用这个文档,你应该在虚函数DeleteContents()函数中删除该文档的数据,而不是在析构器中。
如何建立多文档?
为了加入对附加文档类型的支持,你可以在CWinApp派生类中创建和注册附加CmultiDocTemplate对象。这种方法已经在MULTDOCS样例程序中得以说明。将一个附加文档类型加入到MFC程序的一般步骤如下:
更多精彩
赞助商链接