Microsoft Visual C++ 6.0 - Enterprise Edition 을 사용하고 있습니다.
이전에 만들었던 Dialog를 수정하여 버튼을 누르면 글이 바뀌게 해보자.
먼저 컨트롤 박스를 알자.
이렇게 생긴건데 각 버튼이 뭐하는건지는 찾아보자.
컨트롤 박스를 이용하면 쉽게 아래와 같은 폼을 만들수 있다.
Edit box 와 button 을 사용하여 구성하였다.
Control box에서 만들수 있는 대부분은 Control ID를 가지고 있다.
생성한 control을 선택하고 Enter 키 또는 alt+Enter 를 누르면 속성창이 열린다.
우클릭으로 Properties(속성)을 선택해도 열린다.
여기서는 ID 와 Caption, 여러가지 스타일을 정할 수 있다.
ID는 프로그래밍 하면서 내부적으로 쓰여질 Control의 고유이름이다.
Caption은 다이얼 로그에서 겉으로 보여질 이름이다.
그밖에도 General, styles, Extended Styles 에 체크박스가 여러개 있는데, 이는 모두 스타일을 설정한다.
이제부터 할일은 Edit 박스에 글을 띄울 변수를 설정하고 버튼이 눌러지면 그 변수를 바꾸어 글을 바꾼다.
프로그래밍을 시작하기 위해 ClassWizard를 시작해보자.
메뉴에서 View -> ClassWizard 이고 Hot key는 Ctrl+w 이다.
이런 창이 뜬다.
변수를 만들어야 하므로 Member Vairables 탭으로 이동한다.
Edit 박스의 ID는 IDC_EDIT 였으므로 여기에 연결될 변수를 만들어야 한다.
IDC_EDIT 을 선택하고 오른쪽의 Add variable 또는 IDC_EDIT 라인을 더블 클릭하면 아래와 같은 창이 뜬다.
여기에 변수 이름을 적고 category, type 을 정한다.
category 가 value 이면 문자열, 정수 등의 값을 다루게 되고, Control이면 CEdit를 상속해와서 그 기능을 사용하게 된다.
value를 선택하고, type은 알아서 정하자.
변수가 만들어지면 다음과 같이 확인 할 수 있다.
나는 CString 타입의 m_text라는 변수를 만들었다. (CString은 문자열을 다루는 클래스 타입)
변수를 선언하면 먼저 초기화하는 습관을 기르자.
너무 간단하기에 어떤때는 정말 찾기 힘든 에러의 원인이 될 수도 있다.
잠깐 보고 가기
OnInitDialog()라는 함수가 있는데 여기서 초기화를 한다. Dialog를 생성할때 실행되는 함수이다.
ClassView에서 C****Dlg의 하위 OnInitDialog()를 더블 클릭하면 함수가 뜬다.
가장 아래쪽, return 윗부분에 m_text 에 위와 같이 적어주자.
m_text는 Edit창에 띄울 문자열을 적는것이고, UpdateData(false) 로 그 값을 적용한다.
UpdateData()는 Control들의 데이타를 최신것으로 바꿔준다.
그 파라미터 값이 ture 이면 Control의 Dialog 값을 변수로 가져오고, false 이면 변수의 값을 화면에 적용한다.
위 코드를 실행하므로써 m_text의 값이 Dialog 에 적용되게 된다. (완성 후엔 UpdateData를 빼고 한번 실행해 보자.)
이번엔 버튼 이벤트를 만들자.
ResourceView 로 돌아와서 Dialog하위의 리소스를 선택하자.
아마도 아까 만들던 Dialog가 다시 뜰 것이다.
버튼을 더블 클릭해보자.
그럼 Member function 을 추가하는 창이 뜬다. 이름을 수정해도 되긴하지만, 그냥 놔두고 OK!
OnButton() 함수가 생겼고, 여기에 코드를 작성하면 버튼이 눌러질때 할일을 작성할 수 있다.
OnInitDialog()와는 다른 문자열을 저장하고, UpdateData(false)를 적어주자.
이제 Ctrl + F5 를 통해 실행 해보자.
꼭 코드를 이리 저리 바꿔보자. 이것만 해서는 까먹기 쉽상



