VC++ 做收缩窗口

来源:百度知道 编辑:UC知道 时间:2024/06/20 05:12:39
我要做一个收缩窗口,就是点击一个按钮,让窗口展开和收缩,代码如下:
void CMy10Dlg::OnButton()
{
// TODO: Add your control notification handler code here
CString str;
static CRect rectLarge;
static CRect rectsmall;
if(GetDlgItemText(IDC_BUTTON,str),str=="打开聊天记录")
{
SetDlgItemText(IDC_BUTTON,"关闭聊天记录");
}
else
{
SetDlgItemText(IDC_BUTTON,"打开聊天记录");
}

if(rectLarge.IsRectNull())
{
CRect rectSeparator;

GetWindowRect(&rectLarge);
GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);
rectsmall.left=rectLarge.left;
rectsmall.top=rectLarge.top;
rectsmall.right=rectSeparator.right;
rectsmall.bottom=rectLarge.bottom;
}

if(str=="关闭聊天记录")
{

SetWindowPos(NULL,0,0,rectsmall.Width(),rectsmall.Height(),SWP_NOMOVE|SWP_NOZORDER);

}
else
{
SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height()

1、将按钮名称改为打开聊天记录
2、在头文件中添加两个变量:
CRect rectLarge;
CRect rectsmall;
在构造函数中添加:
rectLarge.top=0;
rectLarge.bottom=0;
rectLarge.left=0;
rectLarge.right=0;
3、在OnPaint()中添加:
if(rectLarge.IsRectNull())
{
CRect rectSeparator;

GetWindowRect(&rectLarge);
GetDlgItem(IDC_SEPARATOR)->GetWindowRect(rectSeparator);
rectsmall.left=rectLarge.left;
rectsmall.top=rectLarge.top;
rectsmall.right=rectSeparator.right;
rectsmall.bottom=rectLarge.bottom;

SetWindowPos(NULL,0,0,rectsmall.Width(),rectsmall.Height(),SWP_NOMOVE|SWP_NOZORDER);
}
4、将OnButton()中的消息响应喊改为:
CString str;
int a[4]={rectLarge.top,rectLarge.bottom,rectLarge.left,rectLarge.right};
int b[4]={rectsmall.top,rectsmall.bottom,rectsmall.left,rectsmall.right};

if(GetDlgItemText(IDC_BUTTON,str),str=="打开聊天记录")
{
SetDlgItemText(IDC_BUTTON,"关闭聊天记录&q