더북(TheBook)

OnInitalUpdate 함수 내에서 가장 먼저 한 일이 상위 클래스인 CScrollView 클래스의 OnInitialUpdate 함수를 호출한 것이다. 이처럼 상위 클래스의 동일 함수를 다시 한 번 호출함으로써 CImageToolView 클래스에 필요한 기본적인 초기화 기능들을 수행할 수 있다. CSize는 사각형 영역의 크기를 표현하는 클래스이며, 정수형의 멤버 변수 cxcy를 가지고 있다. 여기서는 sizeTotal의 사각형 크기가 100×100으로 설정되어 있다. 마지막 줄의 SetScrollSizes 함수는 CScrollView 클래스에 정의된 멤버 함수로써 스크롤바가 생겨야 하는 크기를 알려주는 역할을 한다. SetScrollSizes 함수의 원형은 다음과 같다.

void SetScrollSizes(
    int nMapMode,
    SIZE sizeTotal,
    const SIZE& sizePage = sizeDefault,
    const SIZE& sizeLine = sizeDefault
);

여기서 nMapMode는 매핑 모드mapping mode를 지정하는 것이며, 이 책에서는 오직 MM_TEXT 형태의 매핑 모드만을 사용한다. MM_TEXT 모드는 픽셀 단위를 사용하고 좌상단 좌표를 (0, 0)으로 인식하는 매핑 모드이다. 컴퓨터에서 영상을 표현하는 방법도 이와 유사하기 때문에 영상을 처리하는 프로그램에서는 MM_TEXT 매핑 모드를 사용하는 것이 좋다. SetScrollSizes 함수의 두 번째 인자에는 SIZE 구조체 타입의 변수가 들어가며, 스크롤바가 생겨야 할 크기를 지정하도록 하고 있다. OnInitialUpdate 함수에서는 SIZE 구조체 타입 대신에 CSize 클래스 타입의 변수 sizeTotal을 전달하고 있는데, 이는 CSize 클래스가 자동으로 SIZE 구조체 타입으로 형변환될 수 있기 때문이다. 결국 MFC 응용 프로그램 마법사가 만들어준 기본 OnInitialUpdate 함수에서는 뷰 영역의 크기가 가로 100픽셀, 세로 100픽셀 크기보다 작아지면 스크롤바가 나타나도록 설정한 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.