Kim Yeon Hee yhkim95@gmail.com 제4_1장 대화상자 Kim Yeon Hee yhkim95@gmail.com.

Slides:



Advertisements
Similar presentations
7.1/2 메뉴편집기 사용하기 7.1 메뉴편집기 사용하기 7.2 MDI사용하기.
Advertisements

윈도우 프로그래밍 실습 김 창 헌.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
DB 프로그래밍 학기.
DB 프로그래밍 학기.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Lab 10 Guide: 프린터 출력 예제. 한 페이지의 그림 인쇄 (교재 24장, 쪽)
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Index SendMemo 기능 Q & A 팀 소개 배경 및 목적 구현
제4장 대화상자.
대화 상자기반 응용프로그램을 연습한다. 공통 대화상자를 다루는 방법을 배운다.. Chapter 06. 공통 대화상자 Section 01 공통 대화상자 클래스 Section 02 색상 대화상자 Section 03 파일 대화상자 Section 04 폰트 대화상자.
Image & Video processing
Power Java 제3장 이클립스 사용하기.
윤 홍 란 다이알로그(대화상자) 윤 홍 란
공통 컨트롤의 종류와 특징을 개관한다. 각종 공통 컨트롤의 사용 방법을 익힌다..
Outlook Express 메일 백업 및 복원가이드
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
예제로 배우는 Visual Basic 선곡기를 통해 익히는 리스트박스와 콤보박스
마우스(Mouse) 다루기 컴퓨터응용 및 실습 I.
제4장 대화상자 4.1 CDialogEx 클래스 4.2 대화상자 기반의 프로그램 실습 4-1 MFC 기본 컨트롤 사용법 익히기
대화상자 편집기의 사용법을 익힌다. 모드형 대화상자와 비 모드형 대화상자의 차이점을 이해하고 작성 방법을 익힌다.
Communication and Information Systems Lab. 황재철
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
03장 영상처리를 위한 Visual C++ 디지털 영상 파일 포맷
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
분할 윈도, 다중 뷰… 영상 통신 연구실 권 동 진 발표 일 : 04월 27일.
10장. 예외처리.
11장. 1차원 배열.
CHAP 12. 리소스와 보안.
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
인터넷응용프로그래밍 JavaScript(Intro).
4. 대화상자와 Resource 최 영 석.
2015학년도 PHP 기말 레포트 로그인 홈페이지 제작.
홀인원2.0 설치 메뉴얼.
영상처리 실습 인공지능연구실.
GUI 소켓 애플리케이션 Chapter 08. * 학습목표 윈도우 GUI 애플리케이션의 구조와 동작 원리를 이해
Lesson 2. 기본 데이터형.
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
7주차 실습 FPGA 보드 사용법.
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
CHAP 21. 전화, SMS, 주소록.
객체기반 SW설계 팀활동지 4.
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
영상처리 실습 (OpenCV + MFC) Chonbuk National University A.I. Lab.
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
가장 많이 사용 Accelerator 최상위 WM_COMMAND, OLE 메시지 관련 이벤트 처리만 가능 이 클래스를 상속받아서 다른 이벤트 처리 이벤트 처리 관련 윈도우(창) 최상위 클래스 멀티 테스킹(모듈) CFrameWnd, Cview,
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
메뉴(Menu) 컴퓨터응용 및 실습 I.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
구조체(struct)와 공용체(union)
9 브라우저 객체 모델.
슬라이드 쇼의 설정 슬라이드 쇼의 실행 파일과 폴더의 관리 글꼴을 포함해서 저장 웹 페이지로 게시 압축 파일
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
BALENO MeSSENGER (BALENO-M) 메뉴얼.
Installation Guide.
7 생성자 함수.
6 객체.
BoardGame 보드게임 따라가기.
Presentation transcript:

Kim Yeon Hee yhkim95@gmail.com 제4_1장 대화상자 Kim Yeon Hee yhkim95@gmail.com

목차 CDialog 클래스 대화상자 기반의 프로그램 실습 4-1 MFC 기본 컨트롤 사용법 익히기 모달 대화상자와 모덜리스 대화상자 공용 대화상자

CDialog클래스 대화상자 CDialog 클래스 사용자와 윈도우간의 인터페이스 대화상자는 CDialog 클래스로 정의 모든 윈도우 메시지 처리 가능

대화상자 기반의 프로그램 대화상자 기반의 프로그램 애플리케이션 클래스와 다이얼로그 클래스로 구성 클래스 기저 클래스 설 명 CWinApp 프로젝트 전체를 관리하는 클래스 다이얼로그 클래스 CDialog 대화상자의 기능을 구현하는 실제적인 클래스 도움말 대화상자 클래스 도움말 정보 클래스

대화상자 기반의 프로그램 대화상자 프로그램의 동작 프로그램 실행  생성자 함수 호출  OnCreate()호출  OnInitDialog()호출(대화상자가 화면에 보이기 바로 전에 실행-초기값부여) OnPaint()  DoDataExchange()함수는 컨트롤을 어떤 방식으로 이용할지 결정한다.

대화상자 기반의 프로그램 컨트롤의 핸들로 클래스와 연결하는 방법 컨트롤의 핸들을 얻기 위해 컨트롤의 포인터를 받을 포인터 변수를 선언 GetDlgItem() 함수를 이용하여 컨트롤의 포인터를 선언된 포인터 변수에 치환한다. 클래스의 멤버를 이용하여 컨트롤을 다룬다. 예) CListBox *pList; pList = (CListBox *)GetDlgItem(IDC_LIST1); pList->AddString(“데이터”); 컨트롤의 핸들로 클래스와 연결 Ctrl + 컨트롤 더블클릭 설정확인 – 클래스 위저드, 혹은 ~Dlg클래스의 DoDataExChange()함수 확인 Ex) CEdit *pEdit; pEdit = (CEdit *)GetDlgItem(IDC_EDIT_TEXT); //인수는 컨트롤의 ID pEdit -> SetFocus(); //포커스를 줌

대화상자 기반의 프로그램 Visual C++에서 DDX로 연결하는 방법 DoDataExchaneg() Visual C++에서 DDX로 연결하는 방법 Class Wizard에서 Member Variables탭에서 컨트롤 ID를 선택하고 Add Variable 버튼을 누른다 Ctrl키를 누른 상태에서 해당 컨트롤을 더블클릭한다. Category항목에서 value로 연결할 것이지 control를 연결할 것인지 선택 Value로 연결할 경우 variable type을 선택 Member variable name 항목에 멤버 변수 이름을 입력

대화상자 기반의 프로그램 DoDataExchange() 함수 대화상자의 여러 자원을 연결하는 기능을 하는 함수 이 함수 안에는 DDX_Text 함수나 DDX_Control 함수를 이용하여 자원과 연결 DDX_Control 형태로 연결되었을 경우는 변수가 클래스로부터 상속 받았으므로 클래스의 멤버 함수를 마음대로 사용할 수 있다.

대화상자 기반의 프로그램 UpdateData() 함수 DDX_Value 형태로 연결되었을 경우는 UpdateData() 함수를 사용하여 자원을 update하여야 한다. 컨트롤에 있는 데이터를 변수에 가져오고자 한다면 UpdateData(TRUE)를 사용한다. 변수에 특정 값을 주고 그 값을 컨트롤에 보내고 싶다면 UpdateData(FALSE)를 사용한다. 자원 = 컨트롤

대화상자 종료 : PostQuitMessage( 0 );

대화상자 기반의 프로그램 CListBox 클래스의 주요 멤버 함수 GetCount( )함수 AddString( ) 함수 GetText( )함수 ListBox로부터 문자열을 얻어올 때 사용되는 함수 DeleteString( ) 함수 ListBox의 아이템을 삭제할 때 사용하는 함수 Return : 정수 인자 : AddString( 문자열 ) Return : 문자열 // 인자 GetText( 인덱스, CString 객체 ) 인자 : DeleteString( 인덱스 ) 1 . UpdateComboBox()함수 추가 List Box의 아이템 수를 세어서 그 개수만큼 Combo Box에 리스트항목 : n이라는 데이터 추가

대화상자 기반의 프로그램 CComboBox 클래스의 주요 멤버 함수 ResetContent( )함수 AddString( ) 함수 ComboBox의 맨 뒤에 문자열을 추가할 때 사용하는 함수 GetCurSel( )함수 ComboBox에서 선택된 항목의 색인을 반환하는 함수 Return : 정수

실습 4-1 MFC 기본 컨트롤 사용법 익히기 이번 실습에는 MFC 에서 가장 많이 사용되는 기본 컨트롤들을 이용하여 메인 대화상자를 만들고 사용자들의 컨트롤 사용에 따라 컨트롤의 동작을 List Box에 출력하고 Combo Box에 저장하고 삭제할 수 있는 프로그램을 작성하는 것이다.

실습 4-1 실행 결과

실습 4-1 프로그램 작성 순서 다이얼로그 기반의 프로젝트 생성한다. 메인 대화상자의 폼을 구성한다. 컨트롤들을 배치하고 속성을 설정한다. 컨트롤들을 멤버 변수와 연결한다. 각 컨트롤에 대한 메시지 핸들러 함수를 생성 프로그램을 실행한다

실습 4-1 대화상자의 폼 구성 IDC_EDIT_NAME 8 IDC_LIST_RESULT 1 2 3 4 IDC_EDIT_PHONE IDC_BUTTON_DELETE 5 6 7 IDC_BUTTON_INPUT IDC_BUTTON_CLEAR IDC_BUTTON_END

실습 4-1 ① ID : IDC_RMAN, Caption :남, Group :V ② ID : IDC_RWOMAN, Caption :여 ③ ID : IDC_RMIPIL, Caption :미필, Group :V ④ ID : IDC_RPIL, Caption :필 ⑤ ID : IDC_COMBO_VOLUMN,Vertical Scroll : v ⑥ ID : IDC_CHKA , Caption :A형 ⑦ ID : IDC_CHKB , Caption :B형 ⑧ ID : IDC_LIST_RESULT

실습 4-1 멤버변수 선언

실습 4-1 다이얼로그 박스 초기화 버튼 기능 코딩 콤보박스 리스트 추가 (1~9) 입력완료 버튼 자료 입력란에 적어도 이름은 입력되어야 함 빈칸 체크 자료입력란의 내용을 입력하고 입력완료 버튼을 누르면 출력자료 리스트 박스에 내용 추가 이름, 성별, 군필여부, 전화, 규격, 수량, 금액 순 A형 : 수량 * 1000/ B형 : 수량 * 2000 리스트 박스에 추가후 후 자료 입력란 Clear 클리어 이후 이름 입력 창에 커서 위치

실습 4-1 선택삭제 버튼 초기화 종료 리스트 박스에서 선택 후 선택삭제 버튼 누르면 삭제 선택하지 않은 경우 에러메시지 출력 자료 입력란 클리어 종료

모달 대화상자와 모덜리스 대화상자 모달(Modal) 대화상자 모달 대화상자가 출력되면 부모 윈도우에서 작업을 할 수 없다. 모달 대화상자를 닫아야 부모 윈도우에 포커스를 둘 수 있다. DoModal()함수를 이용하여 출력한다. CAllData *pDlg = new CAllData; pDlg->DoModal(); Delete pDlg; Modal 대화상자가 실행되면 부모 윈도우에 포커스를 줄 수 없다. Modal 대화상자를 종료 시켜야 부모 윈도우에 포커스를 줄 수 있다. 생성 Resource view 편집 ( ID를 준다 ex.. IDD_Dialog_Test ) class 추가 마법사 CDialog CDialogTest; //CDialog 형으로 객체 생성

모달 대화상자와 모덜리스 대화상자 모덜리스(Modeless) 대화상자 모달 대화상자와는 달리 모덜리스 대화상자는 닫지 않고도 애플리케이션 내의 다른 윈도우에서 작업할 수 있고 다시 대화상자로 돌아와 작업할 수 있는 대화상자 모덜리스 대화상자의 생성 방법 대화상자에 대한 변수 선언 Create()함수를 이용하여 대화상자 생성 생성한 대화상자를 화면에 표시 CDialog pDlg; ShowWindow();

모달 대화상자와 모덜리스 대화상자 모덜리스 대화상자의 생성의 예 CExDialog m_Dlg; m_Dlg.Create(IDD_EXDIALOG, this); ….. m_Dlg.ShowWindow(SW_SHOW) Create()의 첫 번째 인수는 대화상자의 ID Create()의 두 번째 인수는 부모 윈도우의 포인터 대화 상자 ID 부모 대화상자의 포인터 화면에 보여줌. // 감추기 : SW_HIDE 대화상자 클래스에 대한 변수 선언 Create()함수를 사용하여 대화상자 만든다(첫번째인자는 대화상자의 ID, 두번째 인자는 부모 윈도우의 포인터) ShowWindow()함수를 이용하여 화면에 보여짐(인자는 화면에 보여지는 스타일에 대한 플래그 변수)

공용 대화상자 File 대화상자 CFileDialog 클래스로 정의 생성자 함수에서 다음과 같이 호출 CFileDialog pDlg(TRUE); pDlg.DoModal(); TRUE : Open 대화상자, FALSE : SaveAS 대화상자. 첫 번째 인수 : TRUE -> open / FALSE -> save

공용 대화상자 CFileDialog의 생성자 함수 CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, OFN_FILEMUSTEXIST, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL ); 첫 번째 인수 : TRUE -> open / FALSE -> save 두 번째 인수 : 기본 확장자를 써줌 세 번째 인수 : 기본 파일명 네 번째 인수 : 읽기 전용은 숨겨서 출력 네 번째 인수 : 덮어 쓸 때 물어 볼 것인지 네 번째 인수 : 현재 보여지는 윈도우에 있는 내용만 불러옴 다섯 번째 인수 : 지원 가능한 확장자를 써줌

공용 대화상자 Open 대화상자 출력 예 CFileDialog pDlg( TRUE, //열기 Modal 상자 _T(“Text 파일(*.txt)|*.txt|", NULL, //기본 확장자 설정,기본 파일명 설정은 기본값인(NULL) OFN_HIDEREADONLY| //읽기 전용파일은 숨겨서 보여짐 OFN_FILEMUSTEXIST, //현재 보여지는 파일만 불러 오는 게 가능함 _T(“Text 파일(*.txt)|*.txt|모든 파일(*.*)|*.*|, //지원 가능한 확장자 설정 NULL); if(pDlg.DoModal() == IDOK) { data = pDlg.GetPathName(); //코딩 }

공용 대화상자 Save 대화상자 출력 예 CFileDialog pDlg( FALSE, //열기 Modal 상자 _T("Text 파일(*.txt)|*.txt|"), NULL, //기본 확장자 설정,기본 파일명 설정은 기본값인(NULL) OFN_HIDEREADONLY | //읽기 전용파일은 숨겨서 보여짐 OFN_OVERWRITEPROMPT, //덮어 쓸 것 인지 물어봄 _T("Text 파일(*.txt)|*.txt|모든파일(*.*)|*.*|"), //지원 가능한 확장자 설정 NULL ); if(pDlg.DoModal() == IDOK) { data = pDlg.GetPathName(); //코딩 }

공용 대화상자 Save 대화상자 출력 예 char Filter[ ] = "Text File(*.txt) | *.txt| 모든 파일(*.*) |*.*|"; CFileDialog pDlg(FALSE, "text file(*.txt)", "*.txt", OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, Filter, NULL); if(pDlg.DoModal() == IDOK) { data = pDlg.GetPathName(); … }

공용 대화상자 Font 대화상자 주로 텍스트 기반 애플리케이션에서 사용 해당 클래스는 CFontDialog

공용 대화상자 Font 대화상자 출력하는 방법 CFontDialog fontDlg; fontDlg.DoModal(); 폰트 구조체로 받음 LOGFONT logfont; fontDlg.GetCurrentFont(&logfont); 실제 글꼴 생성 CFont font; font.CreateFontIndirect(&logfont); 현재 DC의 글꼴을 선택함으로써 글꼴을 사용할 수 있다

공용 대화상자 Color 대화상자 사용자에게 색상을 선택하게 하는 대화상자 해당 클래스는 CColorDialog

공용 대화상자 Color 대화상자 사용법 CColorDialog colorDlg; If (colorDlg.DoModal() == IDOK) { COLORREF m_color = colorDlg.GetColor(); }