더북(TheBook)

대화 상자의 [확인] 버튼이 클릭되었을 때 실행되는 함수를 추가해보자. 그림 7-12와 같이 산술 및 논리 연산 대화 상자의 디자인 창에서 [확인] 버튼에 마우스를 올려놓고, 마우스 오른쪽 버튼을 클릭하여 나타난 메뉴 중에서 [이벤트 처리기 추가...] 항목을 선택하자. 그러면 그림 7-13과 같은 이벤트 처리기 마법사가 나타날 것이다. 여기서 메시지 형식은 ‘BN_CLICKED’를 선택하고 클래스 목록에서는 CArithmeticLogicalDlg 클래스를 선택한 후, [추가 및 편집] 버튼을 선택하면 OnBnClickedOk 함수가 추가된다. 함수 이름 중에서 Bn은 버튼Button을 의미한다. OnBnClickedOk 함수에 소스 7-11과 같이 코드를 추가하자.

그림 7-12 [확인] 버튼에 대한 이벤트 처리기 추가
그림 7-13 [확인] 버튼을 클릭한 경우에 대한 이벤트 처리기 추가
소스 7-11 도큐먼트 리스트를 받아오는 방법(ArithmeticLogicalDlg.cpp)
CArithmeticLogicalDlg::CArithmeticLogicalDlg(CWnd* pParent /*=NULL*/)
    : CDialogEx(IDD_ARITHMETIC_LOGICAL, pParent)
    , m_nFunction(0), m_pDoc1(NULL), m_pDoc2(NULL)
{

}

…

void CArithmeticLogicalDlg::OnBnClickedOk()
{
    m_pDoc1 = (CImageToolDoc*)m_comboImage1.GetItemDataPtr(m_comboImage1.GetCurSel());
    m_pDoc2 = (CImageToolDoc*)m_comboImage2.GetItemDataPtr(m_comboImage2.GetCurSel());

    CDialogEx::OnOK();
}

OnBnClickedOk 함수는 사용자가 콤보 박스에서 영상을 선택한 후, [확인] 버튼을 클릭하여 대화 상자가 사라지기 바로 직전에 호출된다. 여기서 선택한 도큐먼트의 포인터를 멤버 변수인 m_pDoc1m_pDoc2에 저장하는 것을 볼 수 있다. 그리고 함수 맨 마지막에는 OnOK() 함수를 호출하여, 원래 [확인] 버튼이 클릭되었을 때 내부적으로 해야 하는 작업들을 수행하도록 하고 있다. 소스 7-11의 앞부분에 적어둔 CArithmeticLogicalDlg 클래스 생성자에서는 m_pDoc1m_pDoc2를 모두 NULL로 초기화하고 있다.

이로써 산술 및 논리 연산 대화 상자에 대한 작업은 모두 끝이 났다. 이제 이 대화 상자를 화면에 나타내고, 실제 산술 및 논리 연산 함수를 호출하는 코드를 작성해보자.

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