<4D F736F F F696E74202D203039C0E520B4EBC8ADBBF3C0DA205BC8A3C8AF20B8F0B5E55D>

Similar documents
Microsoft PowerPoint - hci2-lecture9.ppt

Microsoft PowerPoint _대화상자.ppt

윈도우시스템프로그래밍

Comtrol ID 레이블 Hotkey Callback 함수 ⑴ Button, IDC_BTN_DEPT, &Department, OnBtnDepartment ⑵ Button, IDC_BTN_EMP, &Employee, OnBtnEmployee ⑶ Button, IDC_B

윈도우시스템프로그래밍

Microsoft Word - hci08-final-answer.doc

Microsoft PowerPoint - CPP_chap6_interface(2)

Programming hwp

Microsoft Word - hci07-final-answer.doc

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

그래픽 프로그래밍

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

윈도우 프로그래밍의 개념

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

PowerPoint Presentation

PowerPoint Template

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

UI TASK & KEY EVENT

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap06-2pointer.ppt

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

쉽게 풀어쓴 C 프로그래밍

윈도우 프로그래밍의 개념

[제1강] 텍스트를 입력하세요

슬라이드 1

5장 MFC기반 다지기

H3250_Wi-Fi_E.book

DLL(Dynamic Linked Library)

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

PowerPoint 프레젠테이션

윈도우즈프로그래밍(1)

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - Chapter 6.ppt

C++ Programming

슬라이드 1

금오공대 컴퓨터공학전공 강의자료

ThisJava ..

MFC 프로그래밍

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

C++ Programming

Microsoft PowerPoint - chap01-C언어개요.pptx

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

UI TASK & KEY EVENT

Microsoft PowerPoint - hci2-lecture7.ppt

제4장 기본 의미구조 (Basic Semantics)

설계란 무엇인가?

Microsoft PowerPoint 세션.ppt

1. 기본형의형변환복습 C/C++ 형변환의종류 자동형변환 ( 묵시적형변환 ) 강제형변환 ( 명시적형변환 ) 기본형의자동형변환의예 1. 배열 to 포인터변환 배열명은해당배열의첫번째원소의 주소로변환됨 int ary[10]; int *pary = ary; 2. 함수 to 포

PowerPoint 프레젠테이션

gnu-lee-oop-kor-lec06-3-chap7

Microsoft PowerPoint - additional01.ppt [호환 모드]

윈도우 프로그래밍의 개념

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

제8장 자바 GUI 프로그래밍 II

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

Convenience Timetable Design

Microsoft PowerPoint - additional08.ppt [호환 모드]

17장 클래스와 메소드

Design Issues

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

슬라이드 1

Microsoft PowerPoint - CSharp-10-예외처리

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Programming hwp

鍮뚮┰硫붾돱??李⑤낯

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

윤성우의 열혈 TCP/IP 소켓 프로그래밍

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

윈도우즈 프로그래밍

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

gnu-lee-oop-kor-lec10-1-chap10

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

(Microsoft PowerPoint - \301\24613\260\255 - oFusion \276\300 \261\270\274\272)

슬라이드 1

Microsoft Word - src.doc

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

PowerPoint 프레젠테이션

Chapter #01 Subject

Microsoft PowerPoint - Java7.pptx

슬라이드 1

API 매뉴얼

OCW_C언어 기초

<4D F736F F F696E74202D203036C0E520BBE7BFEBC0DA20C0CEC5CDC6E4C0CCBDBA205BC8A3C8AF20B8F0B5E55D>

Visual Basic Visual Basic 소개

PowerPoint 프레젠테이션

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

PowerPoint 프레젠테이션

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Transcription:

09: 대화상자 학습목표 대화상자편집기의사용법을익힌다. 모드형대화상자와비모드형대화상자의차이점을이해하고작성방법을익힌다. 대화상자기반응용프로그램의원리를이해하고작성방법을익힌다. 공통대화상자를다루는방법을배운다.

개요 (1/2) 대화상자 다양한컨트롤을포함하고있는일종의윈도우 사용자로부터입력을받거나정보를출력 1

개요 (2/2) 대화상자종류 모드형대화상자 대화상자를닫지않으면응용프로그램이더이상진행할수없다. 비모드형대화상자 대화상자를닫지않더라도응용프로그램이계속진행할수있다. 2

대화상자템플릿 (1/3) 대화상자템플릿 대화상자자체와포함된컨트롤에대한모든정보를가지고있는이진데이터 리소스로실행파일에포함 대화상자템플릿작성 비주얼 C++ 리소스편집기나텍스트편집기를이용하여리소스스크립트 (*.RC) 작성 리소스컴파일러로이진파일 (*.RES) 파일생성 링크과정에서실행파일에포함 3

대화상자템플릿 (2/3) 리소스스크립트작성 4

대화상자템플릿 (3/3) 리소스스크립트작성 (cont'd) IDD_DIALOG1 DIALOG1 DIALOG DISCARDABLE 0, 0, 187, 98 STYLE DS_MODALFRAME WS_POPUP WS_CAPTION WS_SYSMENU CAPTION "Dialog" FONT 10, "System" BEGIN DEFPUSHBUTTON "OK",IDOK,130,7,50,14 PUSHBUTTON "Cancel",IDCANCEL,130,24,50,14 14 EDITTEXT IDC_EDIT1,7,7,117,14,ES_AUTOHSCROLL EDITTEXT IDC_EDIT2,7,24,117,14,ES_AUTOHSCROLL END 5

대화상자편집기 (1/4) 컨트롤추가와삭제 컨트롤 (Controls) 툴바이용 6

대화상자편집기 (2/4) 컨트롤배치 대화상자 (Dialog) 툴바이용 7

대화상자편집기 (3/4) 탭순서 Tab 키를눌렀을때키보드포커스가이동하는순서 [Layout]->[Tab Order] 메뉴를이용하여변경 8

대화상자편집기 (4/4) 대화상자속성 폰트를바꾸면대화상자와대화상자에포함된컨트롤의크기가폰트의크기에비례해서변경된다. 9

모드형대화상자 (1/4) MFC 클래스계층도 모드형대화상자작성순서 1 대화상자리소스작성 2 CDialog ( 파생 ) 클래스객체생성 이때대화상자리소스 ID를생성자의인자로넘겨준다. 3 CDialog::DoModal() 함수호출 10

모드형대화상자 (2/4) CDialog 클래스가상함수 virtual BOOL CDialog::OnInitDialog ( ); 호출시점 : WM_INITDIALOG 메시지발생시 용도 : 컨트롤을초기화하거나키보드포커스를변경 virtual void CDialog::OnOK ( ); 호출시점 : IDOK 버튼을누를때 용도 : 컨트롤의값을읽거나값의타당성여부를검사한후대화상자종료 11

모드형대화상자 (3/4) CDialog 클래스가상함수 (cont'd) virtual void CDialog::OnCancel ( ); 호출시점 : IDCANCEL 버튼을누를때 용도 : 대화상자종료 12

모드형대화상자 (4/4) OnOK(), OnCancel() 함수내부구현 void CDialog::OnOK() { UpdateData(TRUE); EndDialog(IDOK); } void CDialog::OnCancel() C l() { EndDialog(IDCANCEL); } 13

DDX/DDV (1/8) 모드형대화상자구현 class CMyDialog : public CDialog {... CString m_str; int m_color;... } 14

DDX/DDV (2/8) 모드형대화상자구현 (cont'd) BOOL CMyDialog::OnInitDialog() { CDialog::OnInitDialog(); SetDlgItemText(IDC_STR, STR, m_str); SetDlgItemInt(IDC_COLOR, m_color); return TRUE; } void CMyDialog::OnOK() { GetDlgItemText(IDC_STR, m_str); m_color = GetDlgItemInt(IDC_COLOR); CDialog::OnOK(); } 15

DDX/DDV (3/8) 동작원리 대화상자대화상자객체뷰객체 IDC_STR m_str m_str 대화상자가 2 1 IDC_COLORCOLOR m_color m_color 생성될때 대화상자 대화상자객체 뷰객체 IDC_ STR IDC_COLOR 3 m_ str m_color 4 m_ str m_color OK 버튼을누를때 16

DDX/DDV (4/8) DDX(Dialog Data exchange) 자동화? 대화상자대화상자객체뷰객체 IDC_STR IDC_COLORCOLOR 2 m_str m_color 1 m_str m_color 대화상자대화상자객체뷰객체 IDC_STR IDC_COLOR 3 m_str m_color 4 m_str m_color 17

DDX/DDV (5/8) OnInitDialog(), OnOK() 함수내부구현 BOOL CDialog::OnInitDialog() {... UpdateData(FALSE);... } void CDialog::OnOK() {... UpdateData(TRUE);... } 18

DDX/DDV (6/8) CWnd::UpdateData() 함수내부구현 BOOL CWnd::UpdateData(BOOL bsaveandvalidate) {... CDataExchange dx(this, bsaveandvalidate); DoDataExchange(&dx);... } 19

DDX/DDV (7/8) DDX 구현 컨트롤의값을저장할변수선언 DoDataExchange() 함수를자신의프로그램에맞게재정의 DDX_* 매크로사용 void CMyDialog::DoDataExchange(CDataExchange* pdx) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMyDialog) DDX_Text(pDX, DX IDC_STR, m_str); DDX_Text(pDX, IDC_COLOR, m_color); //}}AFX_DATA_MAP } 20

DDX/DDV (8/8) DDV(Dialog Data Validation) 대화상자의컨트롤에입력한데이터의타당성여부를자동으로검사 DDV_* 매크로사용 void CMyDialog::DoDataExchange(CDataExchange* pdx) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMyDialog) DDX_Text(pDX, IDC_STR, m_str); DDV_MaxChars(pDX, m_str, 10); DDX_Text(pDX, IDC_COLOR, m_color); DDV_MinMaxInt(pDX, m_color, 0, 255); //}}AFX_DATA_MAP } 21

비모드형대화상자 차이점 CDialog::DoModal() 함수대신 CDialog::Create() 함수를이용하여생성한다. 대화상자를닫을때 CDialog::EndDialog() 함수대신 CWnd::DestroyWindow() 함수를호출한다. 모드형대화상자객체는대개스택에생성하지만비모드형대화상자객체는힙에생성한다. 22

대화상자기반응용프로그램 (1/2) 대화상자기반응용프로그램 대화상자가메인윈도우역할을하는응용프로그램 23

대화상자기반응용프로그램 (2/2) InitInstance() 함수 BOOL CSimpleCalcApp::InitInstance() { CSimpleCalcDlg dlg; m_pmainwnd = &dlg; int nresponse = dlg.domodal(); if (nresponse == IDOK) { } else if (nresponse == IDCANCEL) { } } return FALSE; 24

공통대화상자 (1/10) MFC 클래스계층도 25

공통대화상자 (2/10) MFC 공통대화상자클래스 MFC 클래스용도 API 함수 CColorDialog 색상선택 ChooseColor CFileDialog 파일열기또는저장 GetOpenFileName, GetSaveFileName CFindReplaceDialog 찾기또는바꾸기 FindText, ReplaceText CFontDialog 폰트선택 ChooseFont CPageSetupDialog g 페이지설정 ( 페이지크기, PageSetupDlg g 방향, 페이지여백등 ) CPrintDialog 인쇄설정 ( 프린터, 인쇄범위등 ) PrintDlg CPrintDialogEx 인쇄설정 ( 프린터, 인쇄 PrintDlgEx (> 윈도우 (>MFC 7.0) 범위등 ) 2000) 26

공통대화상자 (3/10) CColorDialog CColorDialog dlg; dlg.domodal(); COLORREF color = dlg.getcolor(); CColorDialog dlg(rgb(255, 0, 0), CC_FULLOPEN); dlg.domodal(); COLORREF color = dlg.getcolor(); l 27

공통대화상자 (4/10) CFileDialog CFileDialog dlg(true); if(dlg.domodal() == IDOK) MessageBox(dlg.GetPathName()); CFileDialog dlg(false); if(dlg.domodal() == IDOK) MessageBox(dlg.GetPathName()); thn ()) 28

공통대화상자 (5/10) CFindReplaceDialog 사용방법은교재참조 29

공통대화상자 (6/10) CFontDialog CFontDialog dlg; if(dlg.domodal() == IDOK){ CClientDC dc(this); // 화면을지운다. CRect rect; GetClientRect(&rect); dc.selectstockobject(white_pen); dc.selectstockobject(white_brush); dc.rectangle(&rect); // 선택된색상을알아낸다. COLORREF color = dlg.getcolor(); dc.settextcolor(color); 30

공통대화상자 (7/10) CFontDialog (cont'd) } // 선택된폰트를알아낸다. LOGFONT lf; dlg.getcurrentfont(&lf); CFont font; font.createfontindirect(&lf); dc.selectobject(&font); // 텍스트를출력한다. dc.textout(10, 10, CString(" 한글 & English")); 31

공통대화상자 (8/10) CPageSetupDialog CPageSetupDialog dlg; dlg.domodal(); 32

공통대화상자 (9/10) CPrintDialog CPrintDialog dlg(true); dlg.domodal(); CPrintDialog dlg(false); dlg.domodal(); 33

공통대화상자 (10/10) CPrintDialogEx // stdafx.h 파일에서 WINVER 상수값을 0x0500 이상으로정의한다. // ( 예 ) #define WINVER 0x0500 CPrintDialogEx dlg; dlg.domodal(); 34