7.3.3 대화 상자에 도큐먼트 선택 기능 추가하기
지금까지 대화 상자 디자인, 대화 상자 클래스 추가, 그리고 컨트롤들의 멤버 변수 추가까지 진행하였다. 이제 대화 상자 초기화 작업과 컨트롤들의 동작을 제어하는 작업을 추가해야 한다. 산술 및 논리 연산 대화 상자 초기화에서는 콤보 박스에 도큐먼트 리스트를 추가하는 작업을 수행할 것이다. 그리고 사용자가 [확인] 버튼을 클릭했을 때에는 선택된 도큐먼트를 대화 상자 클래스의 멤버 변수로 설정하는 방법에 대해서 설명할 것이다.
먼저 콤보 박스에 도큐먼트 이름을 추가하는 방법에 대해 알아보자. 앞서 5.2절에서 영상 새로 만들기 대화 상자를 만들 때에는 콤보 박스에 데이터를 추가하기 위해 속성 창에서 문자열을 입력했었다. 프로그램 동작 중 콤보 박스에 문자열을 넣기 위해서는 CComboBox 클래스의 멤버 함수인 InsertString 함수를 사용한다. InsertString 함수의 원형은 다음과 같다.
int InsertString(int nIndex, LPCTSTR lpszString);
여기서 nIndex는 문자열이 들어갈 위치를 나타내고, lpszString은 삽입할 문자열이다. 두 번째 인자에 CString 클래스의 인스턴스를 전달하여도 무방하다.
콤보 박스에는 화면에 직접적으로 나타나는 문자열을 추가하는 것 외에 눈에 보이지 않는 정보도 추가할 수 있다. 이때 사용할 수 있는 함수로 SetItemData와 SetItemDataPtr 함수가 있는데, 여기서는 SetItemDataPtr 함수를 사용하여 현재 화면에 떠 있는 도큐먼트들의 포인터를 저장할 것이다. SetItemDataPtr 함수의 원형은 다음과 같다.
int SetItemDataPtr(int nIndex, void* pData);
첫 번째 함수의 인자인 nIndex는 콤보 박스에 추가할 데이터의 위치(인덱스)를 나타내고, 두 번째 인자는 void* 형으로 특정 주소 값을 받게 되어 있다. nIndex는 0부터 시작하는 정숫값이다.