如何在 CMDIFramewndEx 中设置 m_wndClientArea 的最小尺寸?
Posted
技术标签:
【中文标题】如何在 CMDIFramewndEx 中设置 m_wndClientArea 的最小尺寸?【英文标题】:How to set minimum size for m_wndClientArea in CMDIFramewndEx? 【发布时间】:2017-05-29 06:54:07 【问题描述】:这是视觉工作室屏幕。
当将 visualstudio 屏幕调整到最小时,选项卡式文档视图、左右对话框窗格会以某个最小尺寸显示。
调整大小后,如果我通过拖动将屏幕大小调整到最大,它会变成这样。
而在我的应用程序中,它是一个使用 MFC 功能包创建的 MDI 选项卡式组应用程序。
当调整到最小值时,选项卡式文档和右侧窗格的大小将调整为零宽度。对于右侧窗格,我使用 SetMinSize() 将最小大小设置为 100。
调整大小后,如果我通过拖动将屏幕大小调整到最大,则不会显示右窗格。
我想,要实现这一点,我们需要为 CMDIFramewndEx 的 m_wndClientArea 或 CDockingManager 的 m_rectClientAreaBounds 设置最小大小。
如何做到这一点?
如果您有任何其他解决方案,请建议我。
谢谢
【问题讨论】:
我们不知道CMFCFramewndEx
或m_wndClientArea
是什么。需要更多的勤奋,以及清晰的问题陈述。
请详细说明,可能有图片。就目前而言,您的问题尚不清楚。
请不要发布代码的图片,而是发布代码。
【参考方案1】:
为了限制窗口的最小尺寸,您必须处理 WM_GETMINMAXINFO 消息: 在标题中:
afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
在 cpp 中:
ON_WM_GETMINMAXINFO()
void CChildFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
// TODO: Add your message handler code here and/or call default
lpMMI->ptMinTrackSize.x = 100;
lpMMI->ptMinTrackSize.y = 200;
CMDIChildWnd::OnGetMinMaxInfo(lpMMI);
【讨论】:
您好 flaviu2,感谢您的回复。我已经尝试过您的解决方案。它仅在级联模式下工作。我的应用程序在左侧和右侧有带有可停靠窗格的 MDItabbedGroups,因此此解决方案不起作用。 为什么还要调用基类实现呢?看看documentation。 嗨 IInspectable,是的。对于应用程序窗口,框架设置了一些最小宽度,但如果我调整可停靠窗格和选项卡组区域的大小,它也允许零宽度。 对于可停靠窗格,我可以通过覆盖 CDockablePane 派生类中的 OnGetMinMaxInfo 来设置最小宽度,但对于 tabbedgrouparea,我不知道如何设置最小宽度 一种可能的解决方法是限制 CMainFrame 的大小,以便完全不缩小右窗格 ...以上是关于如何在 CMDIFramewndEx 中设置 m_wndClientArea 的最小尺寸?的主要内容,如果未能解决你的问题,请参考以下文章
安装jdk1.5.0_18。在catalina.sh中设置环境变量
如何在 1:m 关系中设置默认值,Django 中 user_auth_model 的外键