如何在MFC doc/view MDI中限制视图窗口大小?

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

我有一个 MFC 文档/视图应用程序,MDI。一个文档有 7 个视图(基于

CScrollView
),我希望能够限制每个视图窗口的大小。

用户可以通过拖动边缘或使用每个视图标题栏中的最大化/恢复按钮来更改视图的大小。该程序根据文档显示的数据更改视图的大小。

看来我应该使用的是

WM_GETMINMAXINFO
消息。但是,当我将处理程序和
ON_WM_GETMINMAXINFO()
添加到消息映射时,当用户更改视图的大小时,我不会收到任何通知。我尝试将处理程序添加到我的主框架窗口 (
CMainFrame
)、视图窗口和
CChildFrame
。当视图窗口大小更改时,这些都不会发出通知,尽管当主框架窗口大小更改时我确实收到通知。

限制视图窗口大小的正确方法是什么?

Windows 11、Visual Studio 2022、C++

mfc mdi docview window-size
1个回答
0
投票

无法重现。

这应该适用于子框架窗口的最小尺寸为 200x200,最大尺寸为 400x400:

void CChildFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
    lpMMI->ptMaxTrackSize.x = 400;
    lpMMI->ptMaxTrackSize.y = 400;
    lpMMI->ptMinTrackSize.x = 200;
    lpMMI->ptMinTrackSize.y = 200;
    CMDIChildWnd::OnGetMinMaxInfo(lpMMI);
}

在消息映射中添加此内容:

BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
    ...
    ON_WM_GETMINMAXINFO()
END_MESSAGE_MAP()
© www.soinside.com 2019 - 2024. All rights reserved.