【发布时间】:2013-05-14 01:15:04
【问题描述】:
我正在开发一个具有对象浏览器 (CClassView) 的 MDI 应用程序,该应用程序必须根据活动的“文档”更改其显示的内容。
PS:我的搜索都没有成功。
【问题讨论】:
我正在开发一个具有对象浏览器 (CClassView) 的 MDI 应用程序,该应用程序必须根据活动的“文档”更改其显示的内容。
PS:我的搜索都没有成功。
【问题讨论】:
这不是我所期望的,但这是一个可能的解决方案:
问:如何在我的应用程序的任何地方获取活动文档?
A:有几种方法,一种是先获取活动帧 然后调用 CFrameWnd::GetActiveDocument。 ... 在 MDI 应用中,我们 必须另外获取活动的 MDI 子框架。
CDocument* GetMDIActiveDocument()
{
CDocument* pDoc = NULL;
CWnd* pWndMain = AfxGetMainWnd();
ASSERT(pWndMain);
ASSERT(pWndMain->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd))); // Not an MDI app.
CFrameWnd* pFrame = ((CMDIFrameWnd*)pWndMain)->MDIGetActive();
if(NULL != pFrame)
{
pDoc = pFrame->GetActiveDocument(); // get the active document
}
return pDoc;
}
此示例代码可能会建议其他(也许更好)替代方案:
http://msdn.microsoft.com/en-us/library/cstcs513%28v=vs.90%29.aspx
【讨论】:
CDocument 类。我有CMyApp: CWinAppEx、CChildFrame: CMDIChildWndEx 和CMainFrame: CMDIFrameWndEx。有什么我想念的吗?