이것은 문서의 이전 버전입니다!


4.1. 컨트롤(control)에 대하여

일반적으로 다이얼로그 박스에는 직접 정보를 표현하는 대신에, 컨트롤(control)이란 사용자 인터페이스 오프젝트를 통하여 사용자에게 정보를 보여주고 입력받는다. 컨트롤은 다이얼로그 박스를 상위 윈도우(Parent Window)로 갖는 차일드 윈도우(Child Window)가 된다.

비주얼 C++ 6.0에서 다이얼로그 박스 에디터 윈도우의 Controls 툴바는 좌측 그림과 같은 컨트롤들을 포함하고 있다.

하지만 NextWin에서는 아래와 같이 표준 콘트롤만을 사용한다.

 

4.2. 표준 컨트롤(standard control)

그림 컨트롤(Picture)

그림 컨트롤은 비트맵, 아이콘, 윈도우 메타파일을 표시하는데 사용된다.

 

정적 텍스트 컨트롤(Static Text)

정적 텍스트 컨트롤은 사용자가 변경할 수 없는 텍스트를 표시하는데 사용된다. 레이블 컨트롤이라고도 한다.

 

편집 박스 컨트롤(Edit Box)

편집 박스 컨트롤은 사용자가 텍스트를 입력하거나 표시하는 영역을 제공한다. 텍스트 박스 컨트롤이라고도 한다

 

그룹 컨트롤(Group Box)

그룹 컨트롤은 다른 컨트롤을 시각적으로 하나의 그룹으로 묶는 역할을 한다. 프레임 컨트롤이라고도 한다

 

누름 버튼 컨트롤(Push Button)]

누름 버튼 컨트롤은 사용자가 선택할 때 어떤 명령이나 기능을 수행하는 역할을 한다. 명령버튼 컨트롤이라고도 한다.

 

체크 박스 컨트롤(Check Box)

체크 박스 컨트롤은 참/거짓, 또는 예/아니오 옵션을 선택하는데 사용된다.

 

라디오 버튼 컨트롤(Radio Button)

라디오 버튼 컨트롤은 하나의 그룹으로 묶여있는 다른 라디오 버튼 컨트롤 중에서 하나만 배타적으로 선택하는데 사용된다. 옵션 컨트롤이라고도 한다.

 

리스트 박스 컨트롤(List Box)

리스트 박스 컨트롤은 사용자가 선택할 수 있는 항목 리스트를 제공하고 하나 또는 여러 개의 항목을 선택할 수 있게 한다.

 

콤보 박스 컨트롤(Combo Box)

콤보 박스 컨트롤은 텍스트 박스 컨트롤과 리스트 박스 컨트롤이 결합된 형태로, 텍스트 박스 컨트롤에서 데이터를 직접 입력하거나 리스트 박스에서 하나의 항목을 선택할 수 있게 한다.

 

스크롤바 컨트롤(Scroll Bar)

스크롤바 컨트롤은 일정한 범위 안에서 사용자가 하나의 값을 선택할 수 있도록 한다. 수평 스크롤바와 수직 스크롤바가 있다.

 

Custom 컨트롤

브라우즈, 독립버튼, 탭, 폴더, 3D TEXT, 이미지, 에니메이션, 달력, 챠트 등을 나타낼 때 사용된다.

 

4.3. 다이얼로그 박스

가. 다이얼로그 박스 생성

  새로운 다이얼로그 박스를 생성하려면 다음 과정을 수행한다.

 ① 비주얼 C++ insert 메뉴에서 Resource 메뉴 항목을 선택했다.

 ② Insert Resource 다이얼로그 박스의 Resource Type 리스트에서 Dialog를 선택한 후, New 버튼을 선택한다.

또는, 리소스 트리뷰 상태에서 Dialog글자를 클릭 후 오른쪽 마우스로 클릭한 후 팝업 메뉴에서 Insert Dialog 메뉴 항목을 선택한다.

일반적으로 다이얼로그 박스는 ‘확인(OK)'과 ’취소(Cancel)'두 개의 명령 버튼을 포함하게 되므로, 개발자 스튜디오는 기본적으로 각각 IDOK와 IDCANCEL 리소스 ID를 갖는 두 개의 명령 버튼을 포함하는 다이얼로그 박스 리소스를 생성한다.

나. 다이얼로그 박스 리소스 속성 변경

 ① 비주얼 C++ View 메뉴에서 Properties 메뉴 항목을 선택한다.

 ② Dialog Properties 윈도우에서 ID 속성 텍스트 박스에 ‘D_DIALOG', Caption 속성 텍스트 박스에는 ’다이얼로그 연습“이라고 각각 입력한다.

 ③ Font 명령 버튼을 선택하여 Select Dialog Font 다이얼로그 박스에서 ‘굴림’, ‘10’을 각각 선택한 후 OK 버튼을 선택한다. 다이얼로그 박스 리소스에 지정된 글꼴은 다이얼로그 박스에 포함되는 모든 컨트롤에 공통으로 적용된다

 ④ OK와 Cancel 명령 버튼을 각각 두 번 클릭하여 Push Button Properties 윈도우에서 Caption 속성을 ‘확인’, ‘취소’ 로 각각 변경한다.

 

다음 그림은 Dialog Properties 윈도우에서 다이얼로그 박스 리소스 속성을 변경한 결과를 보여준다.

다. 그림(Picture)컨트롤 추가

그림 컨트롤은 비트맵, 아이콘, 윈도우 메타파일을 표시하는데 사용된다.

비트맵을 나타내는 경우 Type은 Bitmap을 선택하고 Image는 그림명을 선택하면 된다.

아이콘도 비트맵과 같은 방법으로 선택하여 나타내면 된다.

라. 레이블(Label, Static Text)컨트롤 추가

레이블 컨트롤은 다이얼로그 박스에 사용자가 변경할 수 없는 텍스트를 표시하는데 사용된다. 다음 그림과 같은 결과가 나오도록 다이얼로그 박스 리소스에 레이블 컨트롤을 추가하고 다음 속성을 지정한다.

마. 텍스트 박스(Text Box, Edit Box) 컨트롤 추가

텍스트 박스 컨트롤은 사용자로부터 텍스트를 입력받거나 표시하는데 사용된다. 텍스트 박스 컨트롤은 레이블 컨트롤과는 달리, 사용자가 텍스트 박스 컨트롤 안에 표시된 정보를 변경시킬 수 있다. 다음 그림과 같은 결과가 나오도록 다이얼로그 박스 리소스에 텍스트 박스 컨트롤을 추가하고 다음 속성을 지정한다.

바. 포커스(focus)와 탭 순서(tab order) 그리고 엑세스 키(access key)

포커스(focus)란 키보드 입력을 받을 수 있는 상태를 나타낸다. 컨트롤은 포커스를 받아야 키보드 입력을 할 수 있게 된다. 명령 버튼 컨트롤이 포커스를 받게 되면 명령 버튼 주위에 점선이 나타나며, 텍스트 박스 컨트롤이 포커스를 받으면 삽입 포인터(Insertion Pointer)가 나타난다. 사용자는 탭 키를 눌러 컨트롤의 포커스를 이동시킬 수 있다. 이 때, 탭 키를 누를 때마다 포커스가 이동하는 순서를 탭 순서(tab order)라고 한다. App Studio는 기본적으로 다이얼로그 박스 리소스에 컨트롤을 생성한 순서대로 탭 순서(tab order)를 지정한다.

이러한 기본적인 탭 순서(tab order)를 변경하려면 다음과 같은 과정을 수행한다.

 ㉮ 비주얼 C++ Layout 메뉴에서 Tab Order 메뉴 항목을 선택한다.

 ㉯ 원하는 탭 순서(tab order)를 따라 컨트롤을 왼쪽 마우스 버튼으로 클릭한다.

우리는 다음 그림과 같이 탭 순서(tab order)를 변경하기로 한다.

그러나 모든 컨트롤이 포커스를 받을 수 있는 것은 아니다. 속성 윈도우에서 컨트롤의 Tapstop 속성이 체크 상태로 지정된 컨트롤만 포커스를 받는다. 일반적으로 그림 박스, 레이블, 그룹 컨트롤은 포커스를 받지 않는다. 따라서, 속성 윈도우에서 이들 컨트롤의 Tabstop 속성의 체크 상태를 지정하지 않는 것이 좋다.

속성 윈도우의 Tabstoop 속성의 체크 상태가 해제되어 포커스를 받을 수 없는 컨트롤이 탭 순서(tab order)가 되면 다음 탭 순서(tab order)의 컨트롤로 포커스가 자동적으로 이동하게 된다.

메뉴 항목과 마찬가지로 레이블 컨트롤에도 액세스 키(access key)를 지정할 수 있다. 메뉴 항목에 엑세스 키를 지정하는 방법과 같이, 엑세스 키로 사용할 문자 앞에 ‘&’를 붙이면된다. 이 경우, Alt 키를 누른 상태에서 액세스 키로 지정된 문자를 누르면 해당 컨트롤로 포커스가 이동하게 된다. 그러나 레이블 컨트롤인 경우에는 포커스를 받을 수 없으므로, 해당 레이블 컨트롤의 다음 탭 순서(tab order)의 컨트롤로 포커스가 이동하게 된다.

 

다이얼로그 박스 리소스 테스트

생성한 다이얼로그 박스 리소스를 테스트하려면 비주얼 C++ Layout 메뉴에서 Test 메뉴 항목을 선택하거나, 개발자 스튜디오 하단의 Dialog 툴바에서 Test 툴바 버튼을 선택한다.

이때, 마치 어플리케이션에서 다이얼로그 박스를 생성한 것과 같이 다이얼로 그 박스 리소스를 테스트할 수 있게 된다. 테스트를 종료하려면 ESC 키를 누르거나 ‘확인(OK)'또는 ’취소(Cancle)' 명령 버튼을 선택한다.

 

사. 그룹 컨트롤 추가

그룹 컨트롤은 그 안에 놓이게 되는 컨트롤을 시각적으로 하나의 단위로 묶인 것처럼 보이게 할 때 사용된다.

이 때 주의할 것은 그룹 컨트롤 안에 있는 컨트롤이 기능적으로 하나의 단위로 묶이는 것이 아니라는 점이다. 다만, 시작적으로만 하나의 단위로 묶인 것처럼 보이게 할 뿐이다.

먼저, ‘데이터 변경’ 다이얼로그 박스에 그룹 컨트롤을 추가하여 다음과 같은 결과가 나오도록 한다. 그룹 컨트롤은 프로그램에서 특별히 코딩을 하지 않으므로 ID를 -1로 지정한다.

아. 옵션 버튼(Option Button, Radio Button)컨트롤 추가

옵션 버튼 컨트롤은 하나의 그룹으로 묶여져 있는 여러 옵션 버튼 컨트롤 중에서 어느 하나만 배타적으로 선택할 때 사용된다. 이때 주의할 것은 옵션 버튼 컨트롤 그룹은 시각적으로 뿐만 아니라, 기능적으로 하나의 그룹으로 묶여져 있어야 한다는 점이다.

이제, 그룹 컨트롤 위에4 개의 옵션 버튼 컨트롤으 추가하여, 다음 그림가 같은 결과가 나오도록 한다.

그룹 지정

앞에서 설명한 바와 같이, 그룹 컨트롤은 그 안에 놓이게 되는 컨트롤을 시각적으로만 하나의 단위로 묶인 것처럼 보이게 할 뿐이다. 이들 컨트롤을 기능적으로도, 하나의 단위로 묶기 위해서는 먼저 탭 순서(tab order)를 지정해야 한다.

다음 그림과 같은 결과가 나오도록 탭 순서를 지정한다.

컨트롤을 기능적으로 하나의 단위로 묶기 위해서는, 탭 순서에 따라 그룹이 시작하는 컨트롤의 Group 속성을 TRUE로 지정하고, 그룹이 끝나는 컨트롤 다음 탭 순서의 컨트롤의 Group 속성은 FALSE가 지정되야한다.

컨트롤이 Group 속성을 TRUE로 지정하려면 속성 윈도우의 Group 체크 박스를 체크 상태로 하면 된다.

 

자. 스핀 버튼(Spin Button) 컨트롤 추가

스핀 버튼 컨트롤은 두개의 화살표 버튼을 제공하며, 텍스트 박스 또는 다른 컨트롤에 표시되는 숫자값을 증가 또는 감소시킬 때 사용된다.

다음 그림과 같은 결과가 나오도록 스핀 버튼 컨트롤과 텍스트 박스, 레이블 컨트롤, 그리고 그룹 컨트롤을 추가한다.

 

스핀 버튼 컨트롤의 스타일 속성

스핀 버튼 컨트롤은 지정된 스타일 속성에 따라 다른 행위를 하게 된다. 스핀 버튼 컨트롤의 스타일 속성에 대하여 주의깊게 살펴볼 필요가 있다. 스핀 버튼 컨트롤의 Spin Properties 윈도우의 Styles 탭에서 다음 속성을 지정 할 수 있다.

Orientation : 화살표 버튼의 방향을 결정한다. Vertical(수직) 또는 Horizontal(수평)을 지정할 수 있다.

 

Link categories 1

Link categories 2