산술 및 논리 연산 대화 상자에 추가된 컨트롤들의 속성에 대해 좀 더 알아보자. 먼저 IDC_COMBO_IMAGE1에 해당하는 콤보 박스의 경우 기본적으로 Sort 항목이 True로 설정이 되는데, 이를 False로 바꿔주자. 그래야 ImageTool 프로그램에서 도큐먼트가 열린 순서대로 콤보 박스의 리스트에 나타나게 된다. 콤보 박스의 타입을 Drop List로 지정하면 콤보 박스 리스트에 들어가는 문자열의 편집이 불가능해지지만, 원하는 항목을 쉽게 선택할 수 있다.
그 다음으로 주의해서 다뤄야 할 컨트롤은 라디오 버튼이다. 특히 IDC_FUNCTION1에 해당하는 라디오 버튼에만 Group 속성을 True로 주고, 나머지 라디오 버튼들은 Group 속성을 False로 설정한 것에 주목하기 바란다. 라디오 버튼이란 여러 개의 항목들 중에서 오직 하나만 선택할 수 있게 하는 컨트롤이다. 그렇다면 여러 개의 라디오 버튼들이 있을 경우에 어떻게 이것들을 하나의 무리(그룹)로 정의할 수 있을까? 그 비밀이 바로 Group 속성에 있다. 즉, 하나의 무리에 속한 라디오 버튼들은 가장 첫 번째 라디오 버튼에만 Group 속성에 True 값을 주고, 나머지에는 모두 False 값을 주는 것이다. 이 경우 컨트롤들의 탭 순서가 매우 중요하게 작용하는데, 하나의 무리에 속한 라디오 버튼들은 연속된 탭 번호를 가져야 하며 가장 빠른 탭 순서를 가진 라디오 버튼에만 Group 속성을 True로 설정해야 한다. 그러므로 대화 상자에 컨트롤 배치가 완료되면, 반드시 탭 순서를 그림 7-11과 표 7-4에 나타난 순서대로 지정해주어야 한다. 탭 순서는 [서식] > [탭 순서] 메뉴를 선택하거나 단축키 Ctrl+D를 눌러서 차례대로 지정할 수 있다.
산술 및 논리 연산 대화 상자의 디자인이 끝났으면 이 대화 상자에 대한 클래스를 추가하자. 산술 및 논리 연산 대화 상자의 클래스 이름은 CArithmeticLogicalDlg를 사용하자.
다음으로는 주요 컨트롤들에 대한 멤버 변수를 추가하자. 표 7-5는 산술 및 논리 연산 대화 상자에서 사용하는 주요 컨트롤들의 멤버 변수 정보를 보여준다. 콤보 박스들은 모두 Control형 멤버 변수로 선언하고, 첫 번째 라디오 버튼인 IDC_FUNCTION1에 대해서는 Value형 멤버 변수로 선언하자.
ID |
범주 |
변수 형식 |
변수 이름 |
최솟값 |
최댓값 |
IDC_COMBO_IMAGE1 |
Control |
CComboBox |
m_comboImage1 |
||
IDC_COMBO_IMAGE2 |
Control |
CComboBox |
m_comboImage2 |
||
IDC_FUNCTION1 |
Value |
int |
m_nFunction |
라디오 버튼에 대한 멤버 변수 m_nFunction의 자료형을 int로 지정하면, m_nFunction 변수는 0부터 5 사이의 정숫값을 가질 수 있게 된다. 라디오 버튼들 중에서 IDC_FUNCTION1에 해당하는 ‘덧셈’ 라디오 버튼이 선택되면 m_nFunction 변수의 값은 0이 된다. 만약 탭 순서가 마지막인 ‘논리 OR’ 라디오 버튼을 선택하면, m_nFunction의 값은 5가 된다.