1、静态,点击Combox右侧小三角,下拉,确定下拉框长度。
2、动态,添加变量 CRect m_rect;
初始化函数中 添加:GetClientRect(&m_rect); //获取对话框的大小
void CCommDlg::ChangeSize(UINT nID, int x, int y) //nID为控件ID,x,y分别为对话框的当前长和宽
{
CWnd *pWnd;
pWnd=GetDlgItem(nID);
if(pWnd!=NULL) //判断是否为空,因为在窗口创建的时候也会调用OnSize函数,但是此时各个控件还没有创建,Pwnd为空
{
if(nID == 1007|nID == 1008|nID == 1009|nID == 1010|nID == 1011)//Combox对应ID
{
CRect rec;
pWnd->GetWindowRect(&rec); //获取控件变化前的大小
ScreenToClient(&rec); //将控件大小装换位在对话框中的区域坐标
rec.left=rec.left*x/m_rect.Width(); //按照比例调整空间的新位置
rec.top=rec.top*y/m_rect.Height();
rec.bottom=rec.bottom*y/m_rect.Height()+150;
rec.right=rec.right*x/m_rect.Width();
pWnd->MoveWindow(rec); //伸缩控件
}
else
{
CRect rec;
pWnd->GetWindowRect(&rec); //获取控件变化前的大小
ScreenToClient(&rec); //将控件大小装换位在对话框中的区域坐标
rec.left=rec.left*x/m_rect.Width(); //按照比例调整空间的新位置
rec.top=rec.top*y/m_rect.Height();
rec.bottom=rec.bottom*y/m_rect.Height();
rec.right=rec.right*x/m_rect.Width();
pWnd->MoveWindow(rec); //伸缩控件
}
}
}
void CCommDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
if(nType!=SIZE_MINIMIZED ) //判断窗口是不是最小化了,因为窗口最小化之后 ,窗口的长和宽会变成0,当前一次变化的时就会出现除以0的错误操作
{
ChangeSize(IDC_BUTTON1,cx,cy);
ChangeSize(IDC_COMBO1,cx,cy);
ChangeSize(IDC_COMBO2,cx,cy);
<span style="white-space:pre"> </span> GetClientRect(&m_rect); //最后要更新对话框的大小,当做下一次变化的旧坐标;}<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
<span style="white-space:pre"> </span> }
}