您的位置:首页 > 其它

MDI中通过GetActiveView获得VIEW

2012-10-24 16:34 393 查看
CMDIFrameWnd *pFrame = (CMDIFrameWnd *)AfxGetApp()->m_pMainWnd; // Get the active MDI child window. CMDIChildWnd *pChild = (CMDIChildWnd *) pFrame->GetActiveFrame(); /* or CMDIChildWnd *pChild = pFrame->MDIGetActive(); */ // Get the active view attached to the active MDI child window. CBusCadView *pView = (CBusCadView *) pChild->GetActiveView();

MDI 框架窗口的工作区被称为 MDICLIENT,也称为工作区中的客户端窗口覆盖。此客户端窗口中又包含零个或更多的子窗口,其中每个可显示的视图,如本图中所示:

--------------------------- | Frame Window | ---> CMDIFrameWnd | (main application window) | --------------------------- | -------------------- | Client Window | ---> MDICLIENT window class | (no view attached) | -------------------- | ----------------------------------------------------------- | | --------------------- --------------------| Child Window 1 | | Child Window 2 | ---> CMDIChildWnd| (one or more views) | | (one or more views | --------------------- --------------------

在此图中所示,MDI 框架窗口没有直接与之相关联的视图。视图实际上与程序关联的 MDI 子窗口。

因此,为 MDI 主框架窗口调用 GetActiveView() 函数将返回 NULL,意味着没有直接与 MDICLIENT 相关视图。通过先查找活动的 MDI 子窗口,在本文的解决方案一节中所述,为的子窗口查找活动视图,可以获取 MDI 应用程序中的活动视图。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: