클라이언트 사이즈를 350, 400 으로 맞추고 싶다고 가정 하자
우선 GetWindowLong으로 자신의 윈도우 스타일을 알아낸다음
AdjustWindowRect로 자신의 윈도우 스타일 + 메뉴의 유무 + 클라이언트 사이즈를 더해서 최종 윈도우 사이즈를 얻어낸다.
그렇게 얻어낸 윈도우 사이즈를 바탕으로 MoveWindow로 사이즈를 맞추면 된다.

     RECT rt={100,100,450,500};// 원하는 클라이언트 사이즈
     DWORD dwStyle = (DWORD)GetWindowLong(AfxGetMainWnd()->m_hWnd, GWL_STYLE);
     AdjustWindowRect(&rt, dwStyle,TRUE);

     MoveWindow(&rt);

아래 코드에서 윈도우 초기 사이즈를 0,0이 아닌 100,100으로 시작한 이유는
AdjustWindowRect로 얻어진 사이즈는 right,bottom을 변경하는게 아니라 left, top을 수정 하기 때문에
0,0으로 시작하면 -값이 들어갈 수 있다.
그럼 타이틀바나 메뉴는 화면 안보일 수도 있기 때문이다.

Posted by 임잉여 :

#define WIDTHSIZE 500
#define HEIGHTSIZE 500


void CTellMeDlg::OnSizing(UINT fwSide, LPRECT pRect)
{
        CRect rt = *pRect;
       
        if(rt.Width() <= WIDTHSIZE ) pRect->right = pRect->left + WIDTHSIZE ;
       
        if(rt.Height() <= HEIGHTSIZE ) pRect->bottom = pRect->top + HEIGHTSIZE ;

       
        CDialog::OnSizing(fwSide, pRect);

}

사이징 이벤트 처리시 WIDTHSIZE 와 HEIGHTSIZE 크기 이하로 윈도우가 작아지지 않는다.

Posted by 임잉여 :