윤 홍 란 hryun@sookmyung.ac.kr 다이알로그(대화상자) 윤 홍 란 hryun@sookmyung.ac.kr
개요 (1/2) 대화상자 다양한 컨트롤을 포함하고 있는 일종의 윈도우 사용자로부터 입력을 받거나 정보를 출력
개요 (2/2) 대화상자 종류 MFC 클래스 계층도 모드형(Modal) 대화상자 비 모드형(Modaless) 대화상자 대화상자를 닫지 않으면 응용 프로그램이 더 이상 진행할 수 없다. 비 모드형(Modaless) 대화상자 대화상자를 닫지 않더라도 응용 프로그램이 계속 진행할 수 있다. MFC 클래스 계층도
대화상자 편집기 (1/4)-리소스에디터 컨트롤 추가와 삭제 컨트롤(Controls) 툴바 이용
대화상자 편집기 (2/4)-리소스에디터 컨트롤 배치 대화상자(Dialog) 툴바 이용
대화상자 편집기 (3/4)-리소스에디터 탭 순서 Tab 키를 눌렀을 때 키보드 포커스가 이동하는 순서 [Layout]->[Tab Order] 메뉴를 이용하여 변경
대화상자 편집기 (4/4)-리소스에디터 폰트를 바꾸면 대화상자와 대화상자에 포함된 대화상자 속성 폰트를 바꾸면 대화상자와 대화상자에 포함된 컨트롤의 크기가 폰트의 크기에 비례해서 변경된다.
예제 : 다이알로그 어플리케이션 작성 반지름을 입력하고 계산 버튼을 누르면 원의 면적과 원의 둘레를 계산하는 프로그램, 지우기를 누르면 입력된 반지름값이 초기값인 10으로 바뀌고 계산되어져 있는 원의 둘레와 면적이 초기값으로 바뀐다.
워크스페이스 생성
다이알로그 어플리케이션 선택
특징 선택
프로젝트 스타일 선택
완료
AppWizard 생성 정보 출력
Class/resource/file view
다이알로그 화면 편집 - 리소스 에디터 리소스에디터를 이용하여 대화상자를 디자인한다. 1개 : edit box 6개 : static text 3개 : button 컨트롤 Property 내용 Edit Box ID IDC_radiusIN Button1 Caption IDOK 계산 Button2 IDC_button1 지우기 Button3 IDCANCEL 닫기
컨트롤 변수 부여 m_radius m_Rresult m_Aresult
컨트롤 변수 부여 반지름입력상자선택후 마우스 오른쪽 버튼 누르고 ->classWizard선택 int m_radius
변수의 validation체크 가능
변수 생성 확인
변수의 초기값 지정-OnInitDialog() 변수에 값이 기억되어있다 하더라고 그것을 화면에 보내주지 않으면 화면에 출력되지 않는다. – 그 역할을 하는 함수가 UpdateData()함수임 UpdateData()함수 FALSE : 변수를 관리하는 메모리에서 화면 출력을 담당하는 메모리로 값 전달 TRUE : 화면 출력을 담당하는 메모리에서 변수를 관리하는 메모리로 값이 전달
메시지 핸들러 추가
코드 추가
윤 홍 란 hryun@sookmyung.ac.kr 도큐먼트/뷰 어플리케이션 생성(SDI) 윤 홍 란 hryun@sookmyung.ac.kr
결과
다이알로그 상자 디자인
다이알로그 상자에 대한 클래스 생성 - MyCalc 마우스 오른쪽 버튼 누르고 -> ClassWizard
ClassWizard에서 Variable추가
메시지핸들러 추가 및 코드 추가
마우스 오른쪽 버튼->Properties 리소스에디터에서 메뉴 추가 마우스 오른쪽 버튼->Properties
CSDIView.cpp의 상단에 #include "MyCalc.h“ 를 반드시 추가해야 한다. 메뉴와 대화상자 연결 CSDIView.cpp의 상단에 #include "MyCalc.h“ 를 반드시 추가해야 한다.
결과