我有一个带有许多对接栏等的 MDI 应用程序。我想知道如何在没有任何此类
CView
的情况下获取 CView
区域的有效客户区域。
如果存在这样的视图,我可以简单地获取其窗口大小,但在现阶段它不存在或可能不存在。
使用 DLL 中的以下内容:
CRect oCRectClient;
AfxGetApp()->GetMainWnd()->GetClientRect(&oCRectClient);
返回整个
CMDIFrameWndEx
客户区域,包括被停靠窗格占据的区域。
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);