动态改变对话框大小

首先,需要在改变大小的对话框中添加一条分隔条,分隔条是用图像控件制作的Picture Control,分隔条的位置就是对话框变小时所在的位置。修改分隔条ID为:IDC_SEPARATOR,选择Sunken属性,意思是下陷。
然后在需要修改的地方加入以下代码:

static CRect rectLarge;
static CRect rectSmall;
if( rectLarge.IsRectNull() )
{
	CRect rectSeparator;
	GetWindowRect(&rectLarge);
	GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);
	rectSmall.left = rectLarge.left;
	rectSmall.top = rectLarge.top;
	rectSmall.right = rectLarge.right;
	rectSmall.bottom = rectSeparator.bottom;
}
if( str == "注销" )
{
	SetWindowPos( NULL, 0, 0, rectSmall.Width(), rectSmall.Height(), SWP_NOMOVE | SWP_NOZORDER );
}
else
{
	SetWindowPos( NULL, 0, 0, rectLarge.Width(), rectLarge.Height(), SWP_NOMOVE | SWP_NOZORDER );
}

定义两个矩形变量,要求是静态的。
判断矩形是否为空,如果为空就对这两个矩形变量进行初始化,一个是大框,一个是小框。获取对话框的坐标初始化大框,获取分隔符的坐标,取其横坐标作为小框的坐标。这段代码只执行一次,因为初始化过后,矩形就非空了。
然后根据条件,用这两个矩形设置对话框的大小尺寸即可。

变量初始化如果放在对话框的初始化函数里的话,就需要定义成员函数。

你可能感兴趣的:(其他)