다이얼로그 박스와 컨트롤 컴퓨터 계측 및 실습
다이얼로그 박스의 역할 사용자의 입력을 받기위한 오브젝트 사용자로 부터 입력 받은 데이터를 다이얼로그 박스를 출력시킨 메인 루틴에 넘겨주고, 그 다음 작업은 다시 메인 루틴이 계속 수행
대화상자의 분류 대화상자 기능, 자원 편집 여부에 따른 분류 작동방법에 따른 분류 정형 대화상자 메시지 대화상자 공용 대화상자 사용자 정의 대화상자 비정형 대화상자 기능, 자원 편집 여부에 따른 분류 작동방법에 따른 분류
정형 대화상자(Modal DialogBox) 비정형 대화상자(Modaless DialogBox) 작동방법에 따른 분류 정형 대화상자(Modal DialogBox) 현 대화상자가 종료 전에는 프로그램의 다른 부분이 수행되지 않는 대화상자 화면 출력 : DoModal() 대부분의 대화상자 비정형 대화상자(Modaless DialogBox) 현 대화상자가 종료되지 않아도 프로그램의 다른 부분이 수행되는 대화상자 화면 출력 : Create() & ShowWindow()
모달 다이얼로그와 모달리스 다이얼로그 박스의 구현상 차이점 생성 방법 DoModal 함수 Creat 함수 종료 방법 EndDialog 함수 DestroyWindow 함수 인스턴스 선언 지역 변수로 선언 동적으로 할당
기능, 자원편집에 따른 분류 공용 대화상자 템플레이트 편집과 소스 편집없이 사용 가능 CCommonDialog의 자식 클래스로 클래스화 시켜놓은 대화상자 사용자 정의 대화상자 응용 프로그램별로 만들어 사용하는 대화상자 각 컴포넌트들의 방 마련 자원 편집기 호출 대화상자 편집 DDE(DDX계열 함수 사용) 정보전달 수행 프로그램 소스편집
다이얼로그 템플릿을 이용한 다이얼로그 박스 디자인 Insert Dialog 기능을 이용해서 다이얼로그 템플릿 추가 주메뉴 : Insert -> 리소스의 자원은 7개로 나누어져 있습니다. 1. Dialog : 대화상자 2. Icon : 아이콘 3. Menu : 팝업 메뉴 4. Cursor : 마우스 커서 5. String Table : 텍스트 문자 6. TOOLBAR : 도구바
다이얼로그 컨트롤 우선 등록하고자 하는 아이콘을 클릭하고 출력하고자 하는 대화상자의 영역을 마우스로 설정하면 새로운 아이템이 등록 등록된 아이템을 수정할 경우 그 영역이 활성화되어 있는 상태에서 AlT_Enter키를 누르면 아이템 및 속성을 수정 TEXT : 대화상자에 글자를 출력시키고자 할 경우 EDIT : 텍스트 데이터를 입력하거나 텍스트 파일을 출력할 경우에 사용
GROUP BOX : 대화상자 안에 어떤 그룹을 만들고 그 그룹 안에 체크 버튼들이 나열되어 있는 경우에 사용 BUTTON CHECK BUTTON : 작은 네모 상자에 선택을 하면 체크가 되고 해제하면 체크가 사라짐 RADIO BUTTON : 선택을 하면 동그란 원 안에 검은색 의 원이 나타나는 버튼 COMBO BOX : 리스트 상자와 동일, 선택된 것이 타이틀창에 나타나며 또한 데이터를 에디트할 수 있는 기능이 추가 LIST BOX : 여러 개의 데이터 리스트를 등록하고 검색할 때 사용 Scroll Bar : 화면을 움직일때 사용
SPIN : 에디터 상자 안에는 숫자가 있고 숫자 옆에 상하 화살표 버튼이 있는 버튼 PROGRESS CONTROL : 어떤 작업이 진행될 때 상자가 나타나고 상자 안에 파란색으로 진 행되는 만큼 바가 늘어나는 진행 상자 SLIDER : AVI 파일을 보거나 긴 WAV 파일을 듣고자 할 경우 하단부에 바가 나타나고 지금 데이터의 어느 정도에 위치했다고 나타내는 움직이는 작은 버튼이 슬라이더 Hot key List Control : 리스트 상자와 같은데 아이콘과 글자가 서로 같이 등록되는 리스트 상자 Tree Control : 트리 구조로 되어 있는 리스트 상자 Tab Control : 여러 카드 리스트가 있고 카드 헤더를 클릭하면 카드가 바뀌는 것을 설정 ANIMATE : 단순한 애니메이션을 출력할 영역을 만듬
Edit 박스 List 박스 Combor 박스 Scoroll Bar
Progress Bar List Controll Tree Controll Spin Slider Bar
다이얼로그 박스 속성 설정 박스의 모양을 예쁘게 꾸미는 데만 신경 쓸 것 Caption : 타이틀에 들어갈 문장 작성 Font : 박스에서 사용되는 폰트를 수정
푸시핀 최소화상자 및 최대화상자 추가 옵션 선택에 따라서 다이얼로그 박스의 스타일이 변경됨
다이얼로그 박스 클래스 CWnd클래스에서 상속을 받았기 때문에 CWnd클래스에 있는 윈도우를 제어하는 기능을 하는 함수들과 윈도우 메시지 핸들러 함수 등을 모두 이용할 수 있음
Cdialog 파생클래스 만들기 새로 생성할 파생클래스의 이름 CDialog로부터 상속 받은 파생클래스를 만들기 위해 CDialog선택 미리 만들어 놓은 다이얼로그 탬플릿의 ID를 선택 ======================= class CNameDlg : public CDialog { // … enum { IDD = IDD_DIALOG2 }; <NameDlg.h>
Cdialog 파생 클래스의 인스턴스 만들어 사용하기
다이얼로그 박스를 출력시켜 사용자의 입력을 받으므로 Cview 파생클래스에 메뉴처리 함수를 만들어줌 Void CDlgTestView::OnDialog() { //TODO: Add…. }
다이얼로그 박스 화면에 출력 #include “NameDlg.h” Void CDlgTestView::OnDialog() { //TODO: Add…. CNameDlg dlg; //CDialog 파생 클래스의 인스턴스 생성 Dlg.DoModal(); // CDialog 클래스의 멤버 함수를 호출 } CNameDlg 클래스를 참조하려면 참조하는 파일의 맨위에는 반드시 NameDlg.h 를 반드시 인클루드 해줌 DoModal() : CDialog 클래스의 멤버함수로서 다이얼로그 박스를 화면에 출력시키고 프로그램의 제어권을 다이얼로그 박스로 넘기는 기능을 하는 함수
CDialog 클래스에 이미 구현되어 있는 기능들 다이얼로그 박스와 컨트롤의 생성 메시지 핸들러 함수 Ex) 다이얼로그 박스가 화면에 출력->WM_INITDIALOG 윈도우 메시지 발생->OnInitDialog 메시지 핸들러 함수 오버라이딩->다이얼로그 박스 초기화 커맨드 메시지 핸들러 함수 Ex) 확인(OK)버튼 클릭->IDOK 커맨드 메시지 발생->OnOK 멤버함수 실행 (취소(IDCANCLE)버튼도 같음)
Cdialog 클래스에 추가해야 하는 기능 MFC에서는 두가지 타입으로 컨트롤을 제어할 수 있도록 편리하고도 강력한 기능들을 제공 Value형 멤버변수 : 사용자가 컨트롤에 입력한 내용이 무엇인지를 컨트롤로 부터 빼내오는 기능을 수행 Control형 멤버변수 : 컨트롤을 하나의 윈도우로서 제어할 수 있는 기능을 수행
Value형 멤버 변수
Value형 멤버 변수란? Cdialog 파생 클래스 UpdateData(FALSE) Value형 멤버 변수 Cstring m_strName Int m_Age UpdateData(FALSE) UpdateData(TRUE)
Value형 멤버 변수 연결하기 [ctrl]키를 누른상태에서 더블클릭 Value형으로 선택
소스코드에는 어떤일이? 멤버 변수가 추가됨
NameDlg.h // 멤버변수가 선언됨
NameDlg.cpp // 멤버변수의 초기화
NameDlg.cpp
메시지 박스 주로 출력용 자원 편집 하지 않음 출력방법 : MessageBox() or AfxMessageBox() 사용 MB_ICONEXCLAMATION | MB_OK) 버튼 상수 아이콘 상수 비트 OR
AfxMessageBox()
메시지 박스 스타일
예 제 1 커맨드 핸들러 함수 구현
예 제 2 CString 문자열 클래스를 사용하여 마우스가 눌려진 위치 좌표 메시지 박스를 띄우는 동작
실습 (다이얼로그 베이스를 이용한 사칙연산 프로그램)