基于单文档的CFormView动态调整对话框的尺寸并成比例调整部署控件
如果你正在开发基于单文档程序,使用了CFormView基类实现多个窗口的显示,那么这个文档可能会给你提供些许帮助。
一、实现对话框填充客户区
当我们添加了资源对话框时,它的尺寸在客户区显示时是不会随着窗口的大小调整的,当框架尺寸小于它的尺寸时,还出现了滚动条,操作麻烦同时视觉效果也不良好。
思路
根据客户区的大小调整资源对话框的大小,而客户区大小由父级的框架进行设定。
步骤
1、 根据屏幕分辨率设定框架的尺寸
请注意,我们不能将在InitInstance中ShowWindow参数SW_SHOW 直接改为SW_SHOWMAXIMIZED。虽然窗口是最大化了但是我们的在CFormView中使用GetClientRect可以看到客户区的尺寸仍然是原来的大小。
如果在PreCreateWindow或者OnCreate函数中设定框架的尺寸时,发现并没有起到作用。
正确的方法是在MainFrame中重载OnGetMinMaxInfo,并根据屏幕分辨率设定窗口的尺寸。
//依据屏幕分辨率设置框架大小
voidCMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
int cx = GetSystemMetrics(SM_CXSCREEN);