我研究了许久,没相处办法啊,菜鸟在此等待大侠们的帮忙,感激不尽!

解决方案 »

  1.   

    这里是孙鑫老师的代码,供参考: CString str; //用来存储当前“收缩扩展”按钮的文本,
    //“收缩扩展”按钮的ID号为IDC_BTN_SOUSUO
    if(GetDlgItemText(IDC_BTN_SOUSUO,str),str=="收缩 <<")
    {
    SetDlgItemText(IDC_BTN_SOUSUO,"扩展 >>");
    }
    else
    SetDlgItemText(IDC_BTN_SOUSUO,"收缩 <<"); static CRect rectLarge;
    //用来保存收缩前窗口矩形的左上角与右下角的坐标
    static CRect rectSmall;
    //用来保存收缩后窗口矩形的左上角与右下角的坐标 if ( rectLarge.IsRectNull())//判断是否初始化
    {
    //用来做分隔符的是图片控件,其实也是窗口类的派生类
    CRect rectSeparator;//存储分隔符的矩形位置
    GetWindowRect(&rectLarge);
    GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);
    rectSmall.left =rectLarge.left;//收缩后的窗口,left
    rectSmall.right = rectLarge.right;//right
    rectSmall.top =rectLarge.top;//top的值跟收缩前相同
    rectSmall.bottom =rectSeparator.bottom;
    //收缩后的窗口的bottom值收缩到分隔符的位置
    }
    if("收缩 <<" == str)
    {
    SetWindowPos(NULL,0,0,rectSmall.Width(), 
    rectSmall.Height(),SWP_NOMOVE | SWP_NOZORDER);
    }
    else //调用CWnd::SetWindowPos()来实现改变窗口的大小
    {
    SetWindowPos(NULL,0,0,rectLarge.Width(), 
    rectLarge.Height(),SWP_NOMOVE | SWP_NOZORDER);
    }//SWP_NOMOVE表示窗口位置不变,SWP_NOZORDER表示窗口Z次序不变
      

  2.   

    用定时方法。初始化的时候是小寸。然后就用定时器定时自加,慢慢就会大了。Width++
    Height++
    ...
      

  3.   

    谢谢各位,但是我发现只要用到UpdateData()这个函数,对话框就变为原来的大小了,怎么办啊?