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

来源:互联网 发布:看看电视软件下载 编辑:程序博客网 时间:2024/05/19 04:28

      因为在做上位机,需要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这两个函数,以下内容摘自一篇博客,令鄙人受益匪浅,拿来和大家一起分享:





0 0
原创粉丝点击