필자는 VIsual studio 2008을 쓰고 있다.
필자는 SDI 기준으로 코딩할 예정이다.
답답해보일 수는 있지만, 그래도 충분히 나한테 도움이 될거라고 생각한다
MFC를 만지면서 내부에 컨트롤 같은건 알아서 크기가 변동할 줄 알았는데 아니였다
그렇게 친절할리가 없었지
말이 길어졌다
윈도우 사이즈 변경 시, 컨트롤 동적 크기 변경에 필요한 샘플코드 부분을 올려준다
먼저 0단계
View클래스에서 속성 -> 메시지 -> WM_SIZE -> OnSize 메소드 추가
void CAgentLogViewer_NewView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
}
이 부분이 추가 될 것이다.
1단계
void CAgentLogViewer_NewView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
if( NULL != m_ListCtrl.GetSafeHwnd() )
{
CRect ListCtrlRect; // 리스트컨트롤박스의 영역
m_ListCtrl.GetWindowRect(ListCtrlRect); // 에디트 박스의 스크린 영역을 구함
// 리스트컨트롤 박스의 스크린 영역을 CAgentLogViewer_NewView 객체의 클라이언트 영역을 기준으로 변경
ScreenToClient(ListCtrlRect);
CRect clientRect;
GetClientRect(clientRect); // CAgentLogViewer_NewView 객체의 클라이언트 영역을 구함
ListCtrlRect.right = clientRect.right - 5; // 클라이언트 영역의 오른쪽에 5픽셀의 공간을 둔다.
ListCtrlRect.bottom = clientRect.bottom - 5; // 클라이언트 영역의 하단에 5픽셀의 공간을 둔다.
m_ListCtrl.MoveWindow(ListCtrlRect); // 리스트컨트롤 박스의 수정된 위치를 적용함
}
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
}
조금 더 이 부분에서 클라이언트 부분을 공부할 필요를 느꼈다