본문 바로가기

old drawer/C, C++, MFC

[MFC]윈도우 리사이즈시 컨트롤 사이즈 리사이즈

//Init
void Dlg_Mesh_Object::OnInitialUpdate()
{

 CFormView::OnInitialUpdate();

 RECT rt;
 GetClientRect( &rt );

 RECT Anirt;
 m_List_Ctrl_Obj_Ani_List.GetClientRect(&Anirt);

 //비율을 계산해둠.
 m_fAni_List_W_Ratio = (float)((float)Anirt.right / (float)rt.right);
 m_fAni_List_H_Ratio = (float)((float)Anirt.bottom / (float)rt.bottom);

 m_bInit = true;

}


//Size
void Dlg::OnSize(UINT nType, int cx, int cy)
{

 CFormView::OnSize(nType, cx, cy);

 //init보다 먼저 Size메세지가 날아오기 때문에 그때는 리턴한다.
 if(!m_bInit)
  return ;

 RECT Anirt;
 m_List_Ctrl_Obj_Ani_List.GetWindowRect(&Anirt);
 ScreenToClient( &Anirt );

//비율만클 크기조절. 
Anirt.right = Anirt.left + (cx * m_fAni_List_W_Ratio);
 Anirt.bottom = Anirt.top + (cy * m_fAni_List_H_Ratio);

 m_List_Ctrl_Obj_Ani_List.MoveWindow(&Anirt, FALSE);

}

 

출처 : http://cowboyback.tistory.com/53