35
다다다다다 다다다 다다다 다다다다다 다다다 다다다 다다다 다다 다 다다 다다다 다다 다 다다

다이얼로그 박스와 컨트롤

Embed Size (px)

DESCRIPTION

다이얼로그 박스와 컨트롤. 컴퓨터 계측 및 실습. 다이얼로그 박스의 역할. 사용자의 입력을 받기위한 오브젝트 사용자로 부터 입력 받은 데이터를 다이얼로그 박스를 출력시킨 메인 루틴에 넘겨주고 , 그 다음 작업은 다시 메인 루틴이 계속 수행. 대화상자의 분류. 정형 대화상자. 메시지 대화상자. 대화상자. 공용 대화상자. 사용자 정의 대화상자. 비정형 대화상자. 기능 , 자원 편집 여부에 따른 분류. 작동방법에 따른 분류. 작동방법에 따른 분류. 정형 대화상자 (Modal DialogBox). - PowerPoint PPT Presentation

Citation preview

Page 1: 다이얼로그 박스와 컨트롤

다이얼로그 박스와 컨트롤다이얼로그 박스와 컨트롤

컴퓨터 계측 및 실습컴퓨터 계측 및 실습

Page 2: 다이얼로그 박스와 컨트롤

다이얼로그 박스의 역할다이얼로그 박스의 역할 사용자의 입력을 받기위한 오브젝트사용자의 입력을 받기위한 오브젝트

사용자로 부터 입력 받은 데이터를 다이얼로그 사용자로 부터 입력 받은 데이터를 다이얼로그 박스를 출력시킨 메인 루틴에 넘겨주고박스를 출력시킨 메인 루틴에 넘겨주고 , , 그 다음 그 다음 작업은 다시 메인 루틴이 계속 수행작업은 다시 메인 루틴이 계속 수행

Page 3: 다이얼로그 박스와 컨트롤

대화상자의 분류대화상자의 분류

정형 대화상자정형 대화상자

비정형 대화상자비정형 대화상자

메시지 대화상자메시지 대화상자

사용자 정의 대화상자

사용자 정의 대화상자

공용 대화상자공용 대화상자

작동방법에 따른 분류작동방법에 따른 분류기능 , 자원 편집 여부에

따른 분류기능 , 자원 편집 여부에

따른 분류

대화상자

대화상자

Page 4: 다이얼로그 박스와 컨트롤

작동방법에 따른 분류작동방법에 따른 분류

정형 대화상자 (Modal DialogBox)정형 대화상자 (Modal DialogBox)

비정형 대화상자 (Modaless DialogBox)비정형 대화상자 (Modaless DialogBox)

현 대화상자가 종료 전에는 프로그램의 다른 부분이 수행되지 않는 대화상자 화면 출력 : DoModal() 대부분의 대화상자

현 대화상자가 종료되지 않아도 프로그램의 다른 부분이 수행되는 대화상자 화면 출력 : Create() & ShowWindow()

Page 5: 다이얼로그 박스와 컨트롤

모달 다이얼로그와 모달리스 다이얼로그 모달 다이얼로그와 모달리스 다이얼로그 박스의 구현상 차이점박스의 구현상 차이점

모달모달 모달리스모달리스

생성 방법생성 방법 DoModal DoModal 함수함수 Creat Creat 함수함수

종료 방법종료 방법 EndDialog EndDialog 함수함수 DestroyWindow DestroyWindow 함수함수

인스턴스 선언인스턴스 선언 지역 변수로 선언지역 변수로 선언 동적으로 할당동적으로 할당

Page 6: 다이얼로그 박스와 컨트롤

기능기능 , , 자원편집에 따른 분류자원편집에 따른 분류

공용 대화상자공용 대화상자 템플레이트 편집과 소스 편집없이 사용 가능 CCommonDialog 의 자식 클래스로 클래스화 시켜놓은 대화상자

사용자 정의 대화상자사용자 정의 대화상자 응용 프로그램별로 만들어 사용하는 대화상자 자원 편집기 호출 자원 편집기 호출 대화상자 편집 대화상자 편집

프로그램 소스편집프로그램 소스편집 각 컴 포 넌 트 들 의 방 마 련

DDE(DDX 계 열 함 수 사 용 ) 정 보 전 달 수 행

Page 7: 다이얼로그 박스와 컨트롤

다이얼로그 템플릿을 이용한 다이얼로그 템플릿을 이용한 다이얼로그 박스 디자인다이얼로그 박스 디자인

Insert Dialog Insert Dialog 기능을 이용해서 기능을 이용해서 다이얼로그 템플릿 추가다이얼로그 템플릿 추가

주메뉴 주메뉴 : Insert -> : Insert -> 리소스의 리소스의 자원은 자원은 77 개로 나누어져 있습니개로 나누어져 있습니다다 . .

1. Dialog : 1. Dialog : 대화상자대화상자 2. Icon : 2. Icon : 아이콘 아이콘 3. Menu : 3. Menu : 팝업 메뉴 팝업 메뉴 4. Cursor : 4. Cursor : 마우스 커서 마우스 커서 5. String Table : 5. String Table : 텍스트 문자 텍스트 문자 6. TOOLBAR : 6. TOOLBAR : 도구바 도구바

Page 8: 다이얼로그 박스와 컨트롤

다이얼로그 컨트롤다이얼로그 컨트롤

우선 등록하고자 하는 아이콘을 클릭하고 우선 등록하고자 하는 아이콘을 클릭하고 출력하고자 하는 대화상자의 영역을 마우스로 출력하고자 하는 대화상자의 영역을 마우스로 설정하면 새로운 아이템이 등록설정하면 새로운 아이템이 등록

등록된 아이템을 수정할 경우 그 영역이 등록된 아이템을 수정할 경우 그 영역이 활성화되어 있는 상태에서 활성화되어 있는 상태에서 AlT_EnterAlT_Enter 키를 키를 누르면 아이템 및 속성을 수정 누르면 아이템 및 속성을 수정

TEXT : TEXT : 대화상자에 글자를 출력시키고자 할 대화상자에 글자를 출력시키고자 할 경우경우

EDIT : EDIT : 텍스트 데이터를 입력하거나 텍스트 텍스트 데이터를 입력하거나 텍스트 파일을 출력할 경우에 사용파일을 출력할 경우에 사용

Page 9: 다이얼로그 박스와 컨트롤

GROUP BOX : GROUP BOX : 대화상자 안에 어떤 그룹을 대화상자 안에 어떤 그룹을 만들고 그 그룹 안에 체크 버튼들이 나열되어 만들고 그 그룹 안에 체크 버튼들이 나열되어 있는 경우에 사용있는 경우에 사용

BUTTONBUTTON CHECK BUTTON : CHECK BUTTON : 작은 네모 상자에 선택을 작은 네모 상자에 선택을

하면 체크가 되고 해제하면 체크가 사라짐하면 체크가 되고 해제하면 체크가 사라짐 RADIO BUTTON : RADIO BUTTON : 선택을 하면 동그란 원 안에 선택을 하면 동그란 원 안에

검은색검은색 의 원이 나타나는 버튼의 원이 나타나는 버튼 COMBO BOX : COMBO BOX : 리스트 상자와 동일리스트 상자와 동일 , , 선택된 선택된

것이 타이틀창에 나타나며 또한 데이터를 것이 타이틀창에 나타나며 또한 데이터를 에디트할 수 있는 기능이 추가에디트할 수 있는 기능이 추가

LIST BOX : LIST BOX : 여러 개의 데이터 리스트를 여러 개의 데이터 리스트를 등록하고 검색할 때 사용등록하고 검색할 때 사용

Scroll Bar : Scroll Bar : 화면을 움직일때 사용화면을 움직일때 사용

Page 10: 다이얼로그 박스와 컨트롤

SPIN : SPIN : 에디터 상자 안에는 숫자가 있고 숫자 에디터 상자 안에는 숫자가 있고 숫자 옆에 상하 화살표 버튼이 있는 버튼옆에 상하 화살표 버튼이 있는 버튼

PROGRESS CONTROL : PROGRESS CONTROL : 어떤 작업이 진행될 때 어떤 작업이 진행될 때 상자가 나타나고 상자 안에 파란색으로 진상자가 나타나고 상자 안에 파란색으로 진

행되는 만큼 바가 늘어나는 진행 상자행되는 만큼 바가 늘어나는 진행 상자 SLIDER : AVI SLIDER : AVI 파일을 보거나 긴 파일을 보거나 긴 WAV WAV 파일을 파일을

듣고자 할 경우 하단부에 바가 나타나고 지금 듣고자 할 경우 하단부에 바가 나타나고 지금 데이터의 어느 정도에 위치했다고 나타내는 데이터의 어느 정도에 위치했다고 나타내는 움직이는 작은 버튼이 슬라이더움직이는 작은 버튼이 슬라이더

Hot keyHot key List Control : List Control : 리스트 상자와 같은데 아이콘과 리스트 상자와 같은데 아이콘과

글자가 서로 같이 등록되는 리스트 상자글자가 서로 같이 등록되는 리스트 상자 Tree Control : Tree Control : 트리 구조로 되어 있는 리스트 트리 구조로 되어 있는 리스트

상자상자 Tab Control : Tab Control : 여러 카드 리스트가 있고 카드 여러 카드 리스트가 있고 카드

헤더를 클릭하면 카드가 바뀌는 것을 설정헤더를 클릭하면 카드가 바뀌는 것을 설정 ANIMATE : ANIMATE : 단순한 애니메이션을 출력할 영역을 단순한 애니메이션을 출력할 영역을

만듬만듬

Page 11: 다이얼로그 박스와 컨트롤

Edit 박스 List 박스

Combor 박스

Scoroll Bar

Page 12: 다이얼로그 박스와 컨트롤

Progress Bar

Slider Bar

Spin

List Controll

Tree Controll

Page 13: 다이얼로그 박스와 컨트롤

박스의 모양을 예쁘게 꾸미는 데만 신경 쓸 것박스의 모양을 예쁘게 꾸미는 데만 신경 쓸 것 Caption : Caption : 타이틀에 들어 갈 문장 작성 타이틀에 들어 갈 문장 작성 Font : Font : 박스에서 사용되는 폰트를 수정박스에서 사용되는 폰트를 수정

다이얼로그 박스 속성 설정다이얼로그 박스 속성 설정

Page 14: 다이얼로그 박스와 컨트롤

푸시핀푸시핀 최소화상자 및 최대화상자 추가최소화상자 및 최대화상자 추가 옵션 선택에 따라서 다이얼로그 박스의 스타일이 변경됨옵션 선택에 따라서 다이얼로그 박스의 스타일이 변경됨

Page 15: 다이얼로그 박스와 컨트롤

다이얼로그 박스 클래스다이얼로그 박스 클래스

CWndCWnd 클래스에서 상속을 받았기 때문에 클래스에서 상속을 받았기 때문에 CWndCWnd 클래스에 있는 클래스에 있는 윈도우를 제어하는 기능을 하는 함수들과 윈도우 메시지 핸들러 윈도우를 제어하는 기능을 하는 함수들과 윈도우 메시지 핸들러 함수 등을 모두 이용할 수 있음함수 등을 모두 이용할 수 있음

Page 16: 다이얼로그 박스와 컨트롤

Cdialog Cdialog 파생클래스 만들기파생클래스 만들기

새로 생성할 파생클래스의 새로 생성할 파생클래스의 이름이름

CDialogCDialog 로부터 상속 받은 로부터 상속 받은 파생클래스를 만들기 위해 파생클래스를 만들기 위해 CCDialogDialog 선택선택

미리 만들어 놓은 미리 만들어 놓은 다이얼로그 탬플릿의 다이얼로그 탬플릿의 IDID 를 를 선택선택

==============================================class CNameDlg : public CDialogclass CNameDlg : public CDialog{{// …// … enum { IDD = IDD_DIALOG2 };enum { IDD = IDD_DIALOG2 };

<NameDlg.h><NameDlg.h>

Page 17: 다이얼로그 박스와 컨트롤

Cdialog Cdialog 파생 클래스의 인스턴스 파생 클래스의 인스턴스 만들어 사용하기만들어 사용하기

Page 18: 다이얼로그 박스와 컨트롤

다이얼로그 박스를 출력시켜 사용자의 입력을 받으므로 다이얼로그 박스를 출력시켜 사용자의 입력을 받으므로 Cview Cview 파생클래스에 메뉴처리 함수를 만들어 줌파생클래스에 메뉴처리 함수를 만들어 줌

Void CDlgTestView::OnDialog()Void CDlgTestView::OnDialog() {{ //TODO: Add….//TODO: Add…. }}

Page 19: 다이얼로그 박스와 컨트롤

다이얼로그 박스 화면에 출력다이얼로그 박스 화면에 출력#include “NameDlg.h”#include “NameDlg.h” Void CDlgTestView::OnDialog()Void CDlgTestView::OnDialog() {{ //TODO: Add….//TODO: Add….

CNameDlg dlg; //CDialog CNameDlg dlg; //CDialog 파생 클래스의 인스턴스 생성파생 클래스의 인스턴스 생성Dlg.DoModal(); // CDialog Dlg.DoModal(); // CDialog 클래스의 멤버 함수를 호출클래스의 멤버 함수를 호출

}} CNameDlg CNameDlg 클래스를 참조하려면 참조하는 파일의 클래스를 참조하려면 참조하는 파일의

맨위에는 반드시 맨위에는 반드시 NameDlg.h NameDlg.h 를 반드시 인클루드 해줌를 반드시 인클루드 해줌 DoModal() : DoModal() : CDialog CDialog 클래스의 멤버함수로서 클래스의 멤버함수로서

다이얼로그 박스를 화면에 출력시키고 프로그램의 다이얼로그 박스를 화면에 출력시키고 프로그램의 제어권을 다이얼로그 박스로 넘기는 기능을 하는 제어권을 다이얼로그 박스로 넘기는 기능을 하는 함수함수

Page 20: 다이얼로그 박스와 컨트롤

CDialog CDialog 클래스에 이미 구현되어 있는 기능들클래스에 이미 구현되어 있는 기능들

다이얼로그 박스와 컨트롤의 생성다이얼로그 박스와 컨트롤의 생성

메시지 핸들러 함수메시지 핸들러 함수 Ex) Ex) 다이얼로그 박스가 화면에 출력다이얼로그 박스가 화면에 출력 ->WM_INITDIALOG ->WM_INITDIALOG 윈도우 윈도우

메시지 발생메시지 발생 ->OnInitDialog ->OnInitDialog 메시지 핸들러 함수 오버라이 딩메시지 핸들러 함수 오버라이 딩 ->->다이얼로그 박스 초기화다이얼로그 박스 초기화

커맨드 메시지 핸들러 함수커맨드 메시지 핸들러 함수 Ex) Ex) 확인확인 (OK)(OK) 버튼 클릭버튼 클릭 ->IDOK ->IDOK 커맨드 메시지 발생커맨드 메시지 발생 ->OnOK ->OnOK

멤버함수 실행 멤버함수 실행 (( 취소취소 (IDCANCLE)(IDCANCLE) 버튼도 같음버튼도 같음 ))

Page 21: 다이얼로그 박스와 컨트롤

Cdialog Cdialog 클래스에 추가해야 하는 기능클래스에 추가해야 하는 기능

MFCMFC 에서는 두가지 타입으로 컨트롤을 제어할 에서는 두가지 타입으로 컨트롤을 제어할 수 있도록 편리하고도 강력한 기능들을 제 공수 있도록 편리하고도 강력한 기능들을 제 공

ValueValue 형 멤버변수 형 멤버변수 : : 사용자가 컨트롤에 사용자가 컨트롤에 입력한 내용이 무엇인지를 컨트롤로 부터 입력한 내용이 무엇인지를 컨트롤로 부터 빼내오는 기능을 수행빼내오는 기능을 수행

ControlControl 형 멤버변수 형 멤버변수 : : 컨트롤을 하나의 컨트롤을 하나의 윈도우로서 제어할 수 있는 기능을 수행윈도우로서 제어할 수 있는 기능을 수행

Page 22: 다이얼로그 박스와 컨트롤

ValueValue 형 멤버 변수형 멤버 변수

Page 23: 다이얼로그 박스와 컨트롤

ValueValue 형 멤버 변수란형 멤버 변수란 ??

Cdialog Cdialog 파생 클래스파생 클래스

ValueValue 형 멤버 변수형 멤버 변수

Cstring m_strNameCstring m_strName

Int m_AgeInt m_Age

UpdateData(FALSE)

UpdateData(TRUE)

Page 24: 다이얼로그 박스와 컨트롤

ValueValue 형 멤버 변수 연결하기형 멤버 변수 연결하기

[ctrl][ctrl] 키를 키를 누른상태에서 누른상태에서 더블클릭더블클릭

ValueValue 형으로 선택형으로 선택

Page 25: 다이얼로그 박스와 컨트롤
Page 26: 다이얼로그 박스와 컨트롤

소스코드에는 어떤일이소스코드에는 어떤일이 ??

멤버 변수가 추가됨멤버 변수가 추가됨

Page 27: 다이얼로그 박스와 컨트롤

NameDlg.hNameDlg.h

// // 멤버변수가 선언됨멤버변수가 선언됨

Page 28: 다이얼로그 박스와 컨트롤

NameDlg.cppNameDlg.cpp

// 멤버변수의 초기화

Page 29: 다이얼로그 박스와 컨트롤

NameDlg.cppNameDlg.cpp

Page 30: 다이얼로그 박스와 컨트롤

메시지 박스메시지 박스

AfxMessageBox(“ 이것은 메시지 상자이다 .”,MB_ICONEXCLAMATION | MB_OK)

아이콘 상수 버튼 상수

비트 OR

주로 출력용 자원 편집 하지 않음 출력방법 : MessageBox() or AfxMessageBox() 사용

Page 31: 다이얼로그 박스와 컨트롤

AfxMessageBox()AfxMessageBox()

Page 32: 다이얼로그 박스와 컨트롤

메시지 박스 스타일메시지 박스 스타일

Page 33: 다이얼로그 박스와 컨트롤

예 제 예 제 11

커맨드 핸들러 함수 구현

Page 34: 다이얼로그 박스와 컨트롤

예 제 예 제 22

CString 문자열 클래스를 사용하여 마우스가 눌려진 위치 좌표 메시지 박스를 띄우는 동작

Page 35: 다이얼로그 박스와 컨트롤

실습실습(( 다이얼로그 베이스를 이용한 사칙연산 프로그램다이얼로그 베이스를 이용한 사칙연산 프로그램 ))