没有活动 CView 的 MDI 应用程序的有效客户端区域

问题描述 投票:0回答:1

我有一个带有许多对接栏等的 MDI 应用程序。我想知道如何在没有任何此类

CView
的情况下获取
CView
区域的有效客户区域。

如果存在这样的视图,我可以简单地获取其窗口大小,但在现阶段它不存在或可能不存在。

使用 DLL 中的以下内容:

CRect  oCRectClient;
AfxGetApp()->GetMainWnd()->GetClientRect(&oCRectClient);

返回整个

CMDIFrameWndEx
客户区域,包括被停靠窗格占据的区域。

visual-c++ mfc mdi
1个回答
0
投票

CMDIFrameWndEx 类管理多个子窗口,包括菜单栏、工具栏、停靠工具窗口以及提供托管 MDI 子窗口功能的 MDIClient 窗口。

https://learn.microsoft.com/en-us/cpp/mfc/managing-mdi-child-windows?view=msvc-170

在 VS 中,右键单击您的 CMainFrame 派生自的 CMDIFrameWndEx 类,然后从上下文菜单中选择“转到定义”。请注意受保护的 m_wndClientArea 成员。只要您处于 CMainFrame 方法的上下文中,您就可以通过简单地调用以下内容轻松检索 MDIClient 的客户区:

RECT rect;
m_wndClientArea.GetClientRect(&rect);
© www.soinside.com 2019 - 2024. All rights reserved.