본문 바로가기

old drawer/C, C++, MFC

[MFC] 다이얼로그 사이즈 조절 관련 함수들

다이얼로그를 이용한 작업 도중에 생긴 답답했던 내용들을 정리합니다.

* 미션: 다이얼로그를 처음 띄울때 화면의 최대화 사이즈로 키우기.

*어디를 수정해야 할까?
1)첫시도: mfc의 리소스의 dialog의 속성을 수정하여 해결하려 하였으나 못찾음 ㅠ.ㅠ
2)Dialog를 생성하고 DoModal을 실행하기 이전에 코드를 수정해 보기
   : 실행시 죽어버림 ㅠ.ㅠ
3)dialog의 OnInitDialog에서 설정함 -> 처리됨

* 어떻게 수정했을까?
먼저 윈도우 조절 관련 함수들을 찾아보니.
ModifyStyle
SetWindowPos
MoveWindow
등으로 조절할 수 있다. (자세한 내용은 MSDN참조)
그리고 좌표를 불러오는 함수들에는
GetWindowRect() : 윈도우 좌표불러오기
GetSystemMetrics(SM_CXSCREEN); 시스템전체 WIDTH
SystemParametersInfo( SPI_GETWORKAREA...) : 시스템영역중 작업표시줄을 제외한 영역불러오기
등이 있다.

최종 소스를 보면,아래와 같다.
 
 CRect rcWork;
// 최대사용가능영역알아오기
 SystemParametersInfo( SPI_GETWORKAREA, 0, &rcWork, 0 ) ;

 // 윈도우 위치를 설정
SetWindowPos(NULL, rcWork.left, rcWork.top, rcWork.right-rcWork.left,
                        rcWork.bottom-rcWork.top, SWP_NOMOVE | SWP_NOZORDER);

<출처> http://daeod.tistory.com/2