더북(TheBook)

다음으로는 사용자가 콤보 박스에서 선택한 도큐먼트를 받아오는 방법에 대하여 알아보자. 산술 및 논리 연산 대화 상자는 두 개의 콤보 박스를 가지며, 각각의 콤보 박스에서 하나의 도큐먼트 포인터를 사용자가 선택하므로 두 개의 도큐먼트 포인터를 전달받아야 한다. 그러므로 이를 저장할 대화 상자의 멤버 변수를 두 개 만들어주어야 한다. CArithmeticLogicalDlg 클래스의 멤버 변수로 소스 7-10과 같이 void* 타입의 변수 m_Doc1m_Doc2를 추가하자. 이 두 변수는 생성자에서 NULL로 초기화해주어야 한다.

소스 7-10 도큐먼트 주소를 저장할 멤버 변수 추가(ArithmeticLogicalDlg.h)
class CArithmeticLogicalDlg : public CDialogEx
{
…
public:
    CComboBox m_comboImage1;
    CComboBox m_comboImage2;
    int m_nFunction;
    void* m_pDoc1;
    void* m_pDoc2;
…
};

m_pDoc1은 첫 번째 콤보 박스에서 선택한 도큐먼트의 주소를 저장할 변수이고, m_pDoc2는 두 번째 콤보 박스에서 선택한 도큐먼트의 주소를 저장할 변수이다. 실제 프로그램 동작 시, 사용자는 콤보 박스에서 원하는 도큐먼트를 선택한 후 [확인] 버튼을 누를 것이다. 이 경우 대화 상자가 사라지면서 대화 상자 내에 있는 콤보 박스도 같이 사라지게 된다. 그러므로 이 콤보 박스가 사라지기 전에 콤보 박스에 저장되어 있는 도큐먼트의 주소를 받아와야 한다. 이를 위하여 [확인] 버튼이 눌려져서 대화 상자가 사라지기 바로 전에 멤버 변수 값을 설정하는 코드를 추가하자.

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