要让对话框中的控件随着对话框大小的变化进行自动调整,这个需要自己在WM_SIZE的响应函数中对所有的控件用MoveWindow()或者SetWindowPos()设置其变化比例,极其繁琐,使人头疼!!
推荐使用EasySize作为解决方案,它用一些宏封装了内部的实现机制,使用起来方便快捷!!很不错哦!
说个题外话:我用VS2012创建的基于对话框的工程,默认生成的对话框,无法用easysize使得控件随着对话框大小自动调整。不过,如果是自己新建的对话框是可以的,于是乎,我舍弃了项目自动生成的对话框,自己新建了一个作为主要的操作窗口,以便在项目中使用的是easysize实现的控件随着窗口自动拉伸变形、缩放。
下面进入主题,easysize的使用如下:
MFC怎么设置窗口和控件自动拉伸变形?
MFC如何使控件大小随着对话框大小自动调整 ?
1、设置对话框属性:Styles->Broder:Resizing
2、网上下载文件EasySize.h文件,并在stdafx.h中引用EasySize.h头文件(同时将EasySize.h放到你的程序目录中)
3、在对话框类定义的最前面添加DECLARE_EASYSIZE(注意:没有分号),如下
Class CEasySizeDemoDlg::public CDialog
{
DECLARE_EASYSIZE
...
}
题外话:在VS2012中不是CDialog,而是CDialogEx
4、在对话框的OnInitDialog消息函数中添加INIT_EASYSIZE,放到函数尾处。
OnInitDialog()
{
CDialog::OnInitDialog();
........
INIT_EASYSIZE;
return TRUE;
}
5、添加响应WM_SIZE消息,在生成的响应函数中添加UPDATA_