mfc里,基于对话框的窗口,具有最大最小化的属性设置。在Border属性里选择Resizing,然后在Maximize和Minimize中选择true。在窗体当中随便拖几个控件,然后运行,此时点击最大化会发现,整个窗体的大小是变大了,但是有效区域并不会改变大小,也就是控件的大小任然不变。那么如何调整对话框中的各个控件,随窗体的大小改变而改变呢?mfc里面有一个消息WM_SIZE,这个消息能响应窗体大小改变事件。具体如何操作?
选择类向导,搜索消息WM_SIZE,添加相应的事件处理函数void CMyDlg::OnSize(UINT nType, int cx, int cy),真正改变控件大小的函数并不是此函数,它还需要配合void CMyDlg::ChangeSize(CWnd *pWnd, int cx, int cy,bool tf) 才能进行处理。具体代码如下:
void CMyDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
if(nType==1) return;//最小化则什么都不做