您的位置:首页 > 其它

MFC控件位置随窗体大小而改变

2015-04-14 13:44 281 查看
因为在做上位机,需要MFC中的控件位置随窗体大小而改变,以下是代码:

首先初始化CRect m_rect,该成员变量用来记录窗体的当前大小。

void CTEST4View::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
CWnd *pWnd=NULL;
this->GetWindowRect(&m_rect);//获取当前窗体的坐标
if(nType==1) return;//<span style="color: rgb(70, 70, 70); line-height: 26px;"><span style="font-family:SimSun;font-size:10px;">这一句必须添加,否则最小化恢复的时候会出错。</span></span>
pWnd = GetDlgItem(IDC_BUTTON1); //获取控件句柄
if(pWnd)
{
CRect rect;  //获取控件变化前的大小
pWnd->GetWindowRect(&rect); //控件在窗口坐标系下的位置
ScreenToClient(&rect); //将窗口坐标系下的位置转换为控件坐标系下的位置
int cwidth =0;
int cheight = 0;
cwidth =rect.right-rect.left;
cheight = rect.bottom - rect.top;
if(m_rect.Width()!=0&&m_rect.Height()!=0){
rect.left=0.8*m_rect.Width();
rect.right=0.8*m_rect.Width()+cwidth;
rect.top=0.8*m_rect.Height();
rect.bottom=0.8*m_rect.Height()+cheight;
pWnd->MoveWindow(rect);//设置控件大小
}

}
GetClientRect(&m_rect);//将变化后的窗口大小设为旧大小
}
关于GetWindowRect和GetClientRect这两个函数,以下内容摘自一篇博客,令鄙人受益匪浅,拿来和大家一起分享:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: