크기 변환 대화 상자 디자인에서 특이한 점은 스태틱 텍스트에 IDC_STATIC이 아닌 새로운 아이디(ID)를 부여했다는 점이다. 아이디가 IDC_OLD_WIDTH와 IDC_OLD_HEIGHT로 되어 있는 스태틱 컨트롤들이 바로 그것이다. 이처럼 스태틱 텍스트 컨트롤에 새로운 아이디를 부여하면, 해당 컨트롤에 대한 멤버 변수를 추가할 수 있다. 그림 9-16에서 ‘1000’이라고 쓰여 있는 이들 스태틱 텍스트에는 실제 프로그램 구현 시 원본 영상의 가로 및 세로 픽셀의 크기를 표시할 것이다. 그림 9-16에서 ‘가로 크기(W): 1000 ->’처럼 보이는 스태틱 텍스트는 실제로는 ‘가로 크기(&W):’, ‘1000’, ‘->’의 세 개의 스태틱 텍스트가 연속으로 붙어 있는 것이고, 이 중 가운데 있는 ‘1000’에 해당하는 스태틱 텍스트는 아이디가 IDC_STATIC이 아니라 IDC_OLD_WIDTH인 것이다.
아이디가 IDC_ASPECT_RATIO인 체크 박스는 캡션에 써 있는 말 그대로 가로, 세로 비율을 원본 영상과 일정하게 유지시켜 주는 동작을 제공할 것이다. 예를 들어 입력 영상의 크기가 320×240 크기인 경우, 사용자가 가로 픽셀의 크기를 640으로 지정하면 세로 크기는 자동으로 480으로 설정될 것이다. ‘보간법’ 글자 옆에 놓여 있는 콤보 박스에서는 최근방 이웃 보간법, 양선형 보간법, 3차 회선 보간법 세 개 중에서 하나를 선택할 수 있도록 할 것이다.
두 개의 에디트 컨트롤에는 각각 스핀 컨트롤을 부착시킬 것이다. 그러므로 스핀 컨트롤의 탭 순서가 에디트 컨트롤 탭 순서 바로 다음이 되도록 설정해야 한다. 스핀 컨트롤 사용법에 대한 자세한 설명은 8.4절의 잡음 추가 대화 상자 부분을 참고하기 바란다.
크기 변환 대화 상자의 디자인이 끝났으면 이 대화 상자에 대한 클래스를 추가하자. 크기 변환 대화 상자의 클래스 이름은 CResizeDlg라고 명명하자. 그리고 대화 상자 컨트롤들에 대한 멤버 변수를 표 9-8을 참조하여 추가하도록 하자. 모두 Value형 멤버 변수로 추가한다.
ID |
범주 |
변수 형식 |
변수 이름 |
최솟값 |
최댓값 |
IDC_OLD_WIDTH |
Value |
int |
m_nOldWidth |
||
IDC_OLD_HEIGHT |
Value |
int |
m_nOldHeight |
||
IDC_NEW_WIDTH |
Value |
int |
m_nNewWidth |
1 |
4096 |
IDC_NEW_HEIGHT |
Value |
int |
m_nNewHeight |
1 |
4096 |
IDC_ASPECT_RATIO |
Value |
BOOL |
m_bAspectRatio |
||
IDC_INTERPOLATION |
Value |
int |
m_nInterpolation |
변수 이름을 보면 대충 그 변수가 저장할 정보의 성격을 가늠할 수 있을 것이다. m_nOldWidth와 m_nOldHeight 멤버 변수는 원본 영상의 가로와 세로 픽셀의 크기를 저장한다. m_nNewWidth와 m_nNewHeight 멤버 변수는 크기 변환을 거쳐 생성될 결과 영상의 가로와 세로 픽셀의 크기를 저장할 것이다. m_bAspectRatio는 BOOL 타입 멤버 변수로써 TRUE이면 원본 영상의 가로, 세로 비율을 유지하게 만들 것이다. 마지막으로 m_nInterpolation 멤버 변수는 보간법의 종류를 지정하는데, 이 값이 0이면 최근방 이웃 보간법, 1이면 양선형 보간법, 2이면 3차 회선 보간법을 의미한다.