회전 변환 대화 상자에는 네 개의 라디오 버튼이 있다. 이들 네 개의 라디오 버튼의 탭 순서는 표 9-12에 나와 있는 순서대로 지정되어야 하며, 첫 번째 라디오 버튼만 Group 속성을 True로 지정한다. 라디오 버튼의 캡션에 나와 있는 대로, 첫 번째 라디오 버튼을 선택하면 영상을 90° 회전시키는 동작을 수행할 것이다. 네 번째 라디오 버튼을 선택한 경우, 에디트 컨트롤에 입력된 각도 크기만큼 영상을 시계 방향으로 회전시킬 것이다.
회전 변환 대화 상자의 디자인이 끝났으면 이 대화 상자에 대한 클래스를 추가하도록 하자. 회전 변환 대화 상자의 클래스 이름은 CRotateDlg를 사용하기로 하고, 표 9-13을 참조하여 대화 상자 컨트롤들에 대한 멤버 변수 두 개를 추가하자
ID |
범주 |
변수 형식 |
변수 이름 |
최솟값 |
최댓값 |
IDC_ROTATE1 |
Value |
int |
m_nRotate |
||
IDC_ANGLE |
Value |
float |
m_fAngle |
0 |
360 |
이제 대화 상자 디자인 창에서 할 일은 모두 끝났다. 회전 변환 대화 상자는 크기 변환 대화 상자와 달리 따로 대화 상자의 동작을 지정할 것이 없다. 컨트롤의 변수 m_nRotate와 m_fAngle의 초깃값도 기본으로 설정되는 값인 0을 그대로 사용할 것이다. 다만, 약간의 사용자 인터페이스 편의를 위해, 임의의 각도를 나타내는 라디오 버튼을 선택했을 때 자동으로 에디트 컨트롤에 숫자를 입력할 수 있도록 설정해보자. 또한, 마우스로 에디트 컨트롤을 선택할 때 자동으로 임의의 각도 라디오 버튼이 선택되도록 만들어보자. 이를 위해 IDC_ROTATE4와 IDC_ANGLE에 해당하는 라디오 버튼과 에디트 컨트롤 위에서 마우스 오른쪽 버튼을 클릭하고, 컨텍스트 메뉴 중에서 [이벤트 처리기 추가] 메뉴를 선택하자. 그리고 이벤트 처리기 마법사에 표 9-14를 참조하여 값을 입력하여 두 개의 멤버 함수 OnBnClickedRotate4와 OnEnSetfocusAngle를 추가하자. 두 개의 함수에 추가할 소스 코드는 소스 9-11에 나타내었다. 그리 복잡한 코드는 아니므로 소스 코드에 대한 자세한 설명은 생략한다.
명령 이름(ID) |
처리 클래스 |
메시지 형식 |
처리기 이름 |
IDC_ROTATE4 |
CRotateDlg |
BN_CLICKED |
OnBnClickedRotate4 |
IDC_ANGLE |
CRotateDlg |
EN_SETFOCUS |
OnEnSetfocusAngle |