我做了个对话框例子,上面有个组合框,当选择其中某项后显示下面两个编辑控件,否则就不显示.关键这两个编辑框下面还有其它控件是不能变的。请各位大虾帮帮忙,不胜感激!

解决方案 »

  1.   

    void TestDlg::ExpandDialog(int nResourceID, BOOL bExpand)  
    {  
    //参数nResourceID表示分割线的ID  
    //参数bexpand为TRUE时表示要扩展对话框,否则缩减对话框  
    static CRect rcLarge;    
    static CRect rcSmall;    
    //首次使用时记下对话框的最大、最小尺寸    
    //开始时,对话框只显示上半部分  
    if(rcLarge.IsRectNull())    
    {    
    CRect rcLand;    
    CWnd *pWndLand=GetDlgItem(nResourceID);    
    ASSERT(pWndLand);    
    GetWindowRect(rcLarge);    
    pWndLand->GetWindowRect(rcLand);    
    rcSmall=rcLarge;    
    rcSmall.bottom=rcLand.bottom;    
    }    
    if(bExpand)    
    {    
    //扩展对话框到最大尺寸    
    SetWindowPos(NULL,0,0,rcLarge.Width(),    
    rcLarge.Height(),    
    SWP_NOMOVE|SWP_NOZORDER);    
    }    
    else    
    {    
    //只显示对话框的上半部分    
    SetWindowPos(NULL,0,0,rcSmall.Width(),    
    rcSmall.Height(),    
    SWP_NOMOVE|SWP_NOZORDER);    
    }    
    }   
    用这个的话,下面全部的控件都会缩放掉,可我只想缩放掉指定那两个编辑控件
      

  2.   

    那你就把那两个编辑框隐藏,然后移动其他控件的位置:MoveWindow。
      

  3.   

    只能ShowWindow+MoveWindow了吧要不你将那两个编辑框放到对话框的最下面,扩展和缩放对话框来控制他们的显示,这样估计又不符合你的需求