더북(TheBook)

회전 변환 대화 상자에는 네 개의 라디오 버튼이 있다. 이들 네 개의 라디오 버튼의 탭 순서는 표 9-12에 나와 있는 순서대로 지정되어야 하며, 첫 번째 라디오 버튼만 Group 속성을 True로 지정한다. 라디오 버튼의 캡션에 나와 있는 대로, 첫 번째 라디오 버튼을 선택하면 영상을 90° 회전시키는 동작을 수행할 것이다. 네 번째 라디오 버튼을 선택한 경우, 에디트 컨트롤에 입력된 각도 크기만큼 영상을 시계 방향으로 회전시킬 것이다.

회전 변환 대화 상자의 디자인이 끝났으면 이 대화 상자에 대한 클래스를 추가하도록 하자. 회전 변환 대화 상자의 클래스 이름은 CRotateDlg를 사용하기로 하고, 표 9-13을 참조하여 대화 상자 컨트롤들에 대한 멤버 변수 두 개를 추가하자

표 9-13 회전 변환 대화 상자에서 추가할 컨트롤 멤버 변수의 속성

ID

범주

변수 형식

변수 이름

최솟값

최댓값

IDC_ROTATE1

Value

int

m_nRotate

IDC_ANGLE

Value

float

m_fAngle

0

360

이제 대화 상자 디자인 창에서 할 일은 모두 끝났다. 회전 변환 대화 상자는 크기 변환 대화 상자와 달리 따로 대화 상자의 동작을 지정할 것이 없다. 컨트롤의 변수 m_nRotatem_fAngle의 초깃값도 기본으로 설정되는 값인 0을 그대로 사용할 것이다. 다만, 약간의 사용자 인터페이스 편의를 위해, 임의의 각도를 나타내는 라디오 버튼을 선택했을 때 자동으로 에디트 컨트롤에 숫자를 입력할 수 있도록 설정해보자. 또한, 마우스로 에디트 컨트롤을 선택할 때 자동으로 임의의 각도 라디오 버튼이 선택되도록 만들어보자. 이를 위해 IDC_ROTATE4와 IDC_ANGLE에 해당하는 라디오 버튼과 에디트 컨트롤 위에서 마우스 오른쪽 버튼을 클릭하고, 컨텍스트 메뉴 중에서 [이벤트 처리기 추가] 메뉴를 선택하자. 그리고 이벤트 처리기 마법사에 표 9-14를 참조하여 값을 입력하여 두 개의 멤버 함수 OnBnClickedRotate4OnEnSetfocusAngle를 추가하자. 두 개의 함수에 추가할 소스 코드는 소스 9-11에 나타내었다. 그리 복잡한 코드는 아니므로 소스 코드에 대한 자세한 설명은 생략한다.

표 9-14 IDC_ROTATE4와 IDC_ANGLE 컨트롤에 대해 추가할 이벤트 처리기 정보

명령 이름(ID)

처리 클래스

메시지 형식

처리기 이름

IDC_ROTATE4

CRotateDlg

BN_CLICKED

OnBnClickedRotate4

IDC_ANGLE

CRotateDlg

EN_SETFOCUS

OnEnSetfocusAngle

소스 9-11 회전 변환 대화 상자 컨트롤 동작 제어(RotateDlg.cpp)
void CRotateDlg::OnEnSetfocusAngle()
{
    m_nRotate = 3;
    UpdateData(FALSE);
}

void CRotateDlg::OnBnClickedRotate4()
{
    CEdit* pEdit = (CEdit*)GetDlgItem(IDC_ANGLE);
    pEdit->SetSel(0, -1);
    pEdit->SetFocus();
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.