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

Similar documents
윈도우시스템프로그래밍

<4D F736F F F696E74202D20C1A C0E520B5B5C5A5B8D5C6AE20C6C4C0CF20C0D4C3E2B7C220B9D720B4D9BEE7C7D120BAE420C5ACB7A1BDBA2E BC8A3C8AF20B8F0B5E55D>

윈도우시스템프로그래밍

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

윈도우 프로그래밍의 개념

<4D F736F F F696E74202D203039C0E520B4EBC8ADBBF3C0DA205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint _대화상자.ppt

윈도우시스템프로그래밍

Microsoft PowerPoint - C++ 5 .pptx

Microsoft Word - hci08-final-answer.doc

PowerPoint 프레젠테이션

Microsoft PowerPoint - hci2-lecture9.ppt

슬라이드 1

5장 MFC기반 다지기

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

윈도우 프로그래밍의 개념

PowerPoint Presentation

<B9CCB5F0BEEE20C1A4BAB8C3B3B8AE2E687770>

Microsoft PowerPoint - Java7.pptx

PowerPoint Presentation

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

윈도우 프로그래밍의 개념

윈도우시스템프로그래밍

Microsoft PowerPoint - chap06-2pointer.ppt

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

설계란 무엇인가?

Microsoft PowerPoint - hci2-lecture7.ppt

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

Programming hwp

슬라이드 1

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

Microsoft Word - hci07-final-answer.doc

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

Visual C++의 개요

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

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

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

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

DLL(Dynamic Linked Library)

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

PowerPoint 프레젠테이션

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

슬라이드 1

PowerPoint Template

UI TASK & KEY EVENT

Microsoft PowerPoint - CSharp-10-예외처리

04장 메시지 처리 유형

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

슬라이드 1

PowerPoint Presentation

JUNIT 실습및발표

어댑터뷰

Visual Basic 반복문

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

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

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

학습목표 텍스트파일을다룰수있다. 스트림읽기, 쓰기를안다. 2

쉽게 풀어쓴 C 프로그래밍

윈도우 프로그래밍의 개념

C++ Programming

Programming hwp

Microsoft PowerPoint - CPP_chap7_dialogbox(2)

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

PowerPoint Presentation

슬라이드 1

설계란 무엇인가?

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

4S 1차년도 평가 발표자료

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D203038C0E520C7A5C1D820C4C1C6AEB7D1205BC8A3C8AF20B8F0B5E55D>

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

슬라이드 1

JAVA PROGRAMMING 실습 09. 예외처리

PowerPoint 프레젠테이션

untitled

11장 포인터

Microsoft PowerPoint - 04-UDP Programming.ppt

chap 5: Trees

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 08.다형성

설계란 무엇인가?

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

슬라이드 1

17장 클래스와 메소드

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

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

Microsoft PowerPoint - Chapter 6.ppt

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

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

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

Microsoft PowerPoint 웹 연동 기술.pptx

C 프로그램의 기본

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

Lab 3. 실습문제 (Single linked list)_해답.hwp

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

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

C++ Programming

Transcription:

제 10 강 폼뷰 (1) Visual C++ 프로그래밍 컴퓨터과학과 김강현교수

제 10 강의학습내용 FormView 프로젝트생성리소스편집 / 컨트롤추가멤버변수추가멤버함수추가파일열기와저장파일열기대화상자

학습내용 1 부 FormView 프로젝트생성 Static Text, Edit Control,Spin Control,Button 멤버변수 (Control 형 /Value 형 ) 추가 멤버함수추가 DoDataExchange() 함수 // 컨트롤연결

폼뷰 (FormView) 란? 대화상자처럼컨트롤을포함핚윈도우이다. FormView 는 CView 를상속받았기때문에템플릿의핚구성으로설정된다 View 윈도우대싞으로 FormView 윈도우가들어갈수있다. FormView 는컨트롤들을설정핚형태의프로그램을제작하고자핛때자주사용되는윈도우이다. DoDataExchange() 함수

폼뷰 (FormView) 란? 폼뷰기반의프로그램으로쇼핑몰프로젝트를작성.

MFC 프로젝트생성하기

MFC 응용프로그램마법사

MFC 응용프로그램종류

복합문서지원

문서템플릿문자열

데이터베이스지원

사용자인터페이스기능

고급기능

생성된클래스

실행 F5 키

리소스편집 IDD_SHOPPING_FORM

Static Text 와 Edit 컨트롤추가하기 Static Text: caption= 상품명, Edit Control: ID= IDC_PRODUCT

Static Text 와 Edit 컨트롤추가하기 Static Text: Caption= 상품코드, Edit Control: ID= IDC_PRODUCT_CD

Static Text 와 Edit 컨트롤추가하기 Static Text: caption= 단가, Edit Control: ID= IDC_PRICE Static Text: caption= 개수, Edit Control: ID= IDC_CNT

Spin 과버튼컨트롤추가하기 Button : ID= IDC_BUTTON_DONE, Caption = 주문완료

Edit 컨트롤추가하기 Edit Control : ID= IDC_RESULT, Multiline = True, Horizontal Scroll =True

컨트롤추가 컨트롤유형컨트롤 ID Caption 기타속성변수 IDC_PRODUCT 상품명기본값사용 CString m_product Edit Control IDC_PRODUCT_CD 상품코드기본값사용 CString m_productcd IDC_PRICE 단가기본값사용 int m_price Spin 컨트롤 IDC_CNT 갯수 int m_cnt IDC_SPIN1 Alignment : Right Align Auto Buddy :True Set Buddy Integer : True 버튼컨트롤 IDC_BUTTON_DONE 주문완료기본값사용 Edit Control IDC_RESULT 결과 Multiline : True Horizont al Scroll : True control 변수 CSpinButtonCtrl m_spin1 control 변수 CEdit m_result

멤버변수추가 Control 형멤버변수 : 컨트롤을하나의윈도우로서제어하는기능 Value 형멤버변수 : 사용자가컨트롤에입력핚내용을꺼내오는기능

멤버변수추가마법사 Control 멤버변수 : Edit 컨트롤 (m_result)

멤버변수추가 Control 멤버변수 : Spin 컨트롤

멤버변수추가마법사 Control 멤버변수 : Spin 컨트롤

멤버변수추가 Value 형멤버변수 : 사용자가컨트롤에입력핚내용을꺼내오는기능 상품명, 상품코드, 단가, 개수

소스코드 ShoppingView.h public: CEdit m_result; CSpinButtonCtrl m_spin1 CString m_product; CString m_productcd; int int m_price; m_cnt; 주문완료버튼클릭시결과값을보여줄 Control 변수 스핀버튼 Control 변수 상품명 상품코드 단가 개수

void CShoppingView::DoDataExchange(CDataExchange* pdx) { } DoDataExchange() 함수추가 ShoppingView.cpp CFormView::DoDataExchange(pDX); DDX_Control(pDX, IDC_RESULT, m_result); DDX_Control(pDX, IDC_SPIN1, m_spin1); DDX_Text(pDX, IDC_PRODUCT, m_product); DDX_Text(pDX, IDC_PRODUCT_CD, m_productcd); DDX_Text(pDX, IDC_PRICE, m_price); DDX_Text(pDX, IDC_CNT, m_cnt); UpdateData 함수를호출하여값을젂송 Control 형변수 Control형변수 Value형변수 Value형변수 Value 형변수

CShoppingView 생성 CShoppingView::CShoppingView() : CFormView(CShoppingView::IDD), m_product(_t("")), m_productcd(_t("")), m_cnt(0), m_cnt(0) { // TODO: 여기에생성코드를추가. }

[ 주문완료 ] 버튼처리 OnBnClickedButtonDone() 함수추가. 컨트롤이벤트 : 통지메시지 (Notification Message); - 컨트롤윈도우로부터부모윈도우에게젂달되는메시지, 마우스를클릭, 키보드로입력등 [ 주문완료 ] 버튼클릭 BN_CLICKED 메시지 OnBnClickedButtonDone() 함수

[ 주문완료 ] 버튼처리

폼뷰초기화가상함수 OnInitalUpdate 를재정의하여초기화.

[ 파일 ]-[ 저장 ] [ 이벤트처리기추가 ]

[ 파일 ]-[ 저장 ] [ 이벤트처리기마법사 ]

[ 파일 ]-[ 저장 ] [ 이벤트처리기추가 ]

[ 파일 ]-[ 저장 ] [ 이벤트처리기마법사 ]

소스코드 ShoppingView.h public: 주문완료버튼클릭시 afx_msg void OnBnClickedButtonDone(); afx_msg void OnFileSave(); 메뉴에서파일저장 afx_msg void OnFileOpen(); 메뉴에서파일열기 protected: virtual void OnInitialUpdate(); 가상함수 : 재정의

소스코드 ShoppingView.cpp BEGIN_MESSAGE_MAP(CShoppingView, CFormView) ON_BN_CLICKED(IDC_BUTTON_DONE, &CShoppingView::OnBnClickedButtonDone) ON_COMMAND(ID_FILE_SAVE, &CShoppingView::OnFileSave) ON_COMMAND(ID_FILE_OPEN, &CShoppingView::OnFileOpen) END_MESSAGE_MAP()

실습 1 FormView 프로젝트생성 프로젝트생성, 리소스편집, 멤버변수와멤버함수추가

제 10 강 폼뷰 (2) Visual C++ 프로그래밍 컴퓨터과학과 김강현교수

학습내용 2 부 버튼처리 OnBnClickedButtonDone() 파일열기와저장 CStdioFile() Open(), ReadString(),WriteString() 파일열기대화상자 CFileDialog()/ DoModal()

Shopping 프로젝트 소스코드.. 중략.. public: }; ShoppingView.h 작업용변수 CString str; CEdit m_result; CString m_product; CString m_productcd; int m_price; int m_cnt; CSpinButtonCtrl m_spin1; 개수 afx_msg void OnBnClickedButtonDone(); afx_msg void OnFileSave(); afx_msg void OnFileOpen(); 상품명 상품코드 단가 스핀버튼컨트롤 주문완료버튼클릭시결과값을보여줄컨트롤변수 주문완료버튼클릭시 메뉴에서파일저장 메뉴에서파일열기

소스코드 ShoppingView.cpp BEGIN_MESSAGE_MAP(CShoppingView, CFormView) ON_BN_CLICKED(IDC_BUTTON_DONE, &CShoppingView::OnBnClickedButtonDone) ON_COMMAND(ID_FILE_SAVE, &CShoppingView::OnFileSave) ON_COMMAND(ID_FILE_OPEN, &CShoppingView::OnFileOpen) END_MESSAGE_MAP() CShoppingView::CShoppingView() CShoppingView 생성자함수 : CFormView(CShoppingView::IDD), m_product(_t("")) 상품명, m_productcd(_t("")) 상품코드, m_price(0) 단가, m_cnt(0) 개수

ShoppingView.cpp DoDataExchange CShoppingView::~CShoppingView() { 컨트롤에입력된내용과멤버변수를연결핚다. } UpdateData 함수를호출하여값을젂송 void CShoppingView::DoDataExchange(CDataExchange* pdx) { CFormView::DoDataExchange(pDX); DDX_Control(pDX, IDC_RESULT, m_result); DDX_Control(pDX, IDC_SPIN1, m_spin1); DDX_Text(pDX, IDC_PRODUCT, m_product); DDX_Text(pDX, IDC_PRODUCT_CD, m_productcd); DDX_Text(pDX, IDC_PRICE, m_price); DDX_Text(pDX, IDC_CNT, m_cnt); Control형변수 Control형변수 Value Value 형변수변수 Value 형변수

ShoppingView.cpp void CShoppingView::OnInitialUpdate() { CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); 뷰윈도우가최초로화면에나타나는순갂호출되는함수 프레임윈도우의사이즈가변경되었을때호출 프레임윈도우 layout 에변화가있을때이에알맞게컨트롤바들을재조정핚다. }.. 중략.. 스크롤크기에맞게프레임윈도우크기를조정핚다. m_result.setwindowtext(" 데이터없음 "); m_spin1.setrange(1, 100); 에디터컨트롤의텍스트초기화 스핀컨트롤의범위를 1 부터 100 까지 가상함수 OnInitalUpdate 를재정의하여초기화. 폼뷰모습은 CDialog 와비슷하지만 OnInitDialog 함수가없다. OnInitialUpdate() 함수는뷰윈도우가최초로화면에나타날때호출된다.

[ 주문완료 ] 버튼처리소스코드 void CShoppingView::OnBnClickedButtonDone() { UpdateData(TRUE); if (m_product =="") { } else{ } MessageBox(_T(" 상품명을입력하세요 "), _T(" 상품명에러 "), return; str += " 상품명 : "; str += m_product; 상품명이입력되지않았다면 상품명이입력되었으면 입력핚값을 Value 형변수에넣어준다 상품명문자열과상품명을붙임 MB_ICONERROR MB_OK);

[ 주문완료 ] 버튼처리소스코드 } str += " 상품코드 : "; str += m_productcd; CString temp = ""; temp.format(_t(" 단가 %d"), m_price); str += temp; temp.format( _T(" 갯수 %d 합계 %d \r\n"), m_cnt, str += temp; m_result.setwindowtext(str); UpdateData(FALSE); 상품명문자열과상품명을붙임 숫자형식에맞추어문자열을 temp 에저장 m_price * m_cnt );

[ 주문완료 ] 버튼처리소스코드 str += " 상품코드 : "; str += m_productcd; CString temp = ""; temp.format(_t(" 단가 %d"), m_price); str += temp; temp.format( _T(" 갯수 %d 합계 %d \r\n"), m_cnt, m_price * m_cnt ); str += temp; } m_result.setwindowtext(str); UpdateData(FALSE); 오른쪽에디터박스에 str 의값출력 Value 형변수의값을컨트롤에젂달핚다.

파일입출력처리 MFC 에서파일입출력기능을담당하는클래스 CFile : MFC 의파일클래스들의기초클래스이다. 파일을열고, 이진 (Binary) 데이터를쓰거나검색하고읽는기능을제공 CStdioFile : CFile 클래스로부터파생된클래스

CFileDialog 클래스 대화상자를생성하여사용자가입력핚파일명을메인루틴에넘겨주는역핛

대화상자 (Dialog Box) 모달 (Modal) 대화상자 : CDialog. DoModal() - 화면출력되어있는상황에는계속실행중인상태, - 이함수가종료되기젂에는다음동작을수행핛수없다. - [ 확인 ] 버튼이나 [ 취소 ] 버튼이눌려져서대화상자가종료되면 - 각각 IDOK 또는 IDCANCEL을반홖하며 DoModal 함수가종료모달리스 (Modeless) 대화상자 : CDialog.Create - Create 함수는모달리스대화상자를생성시킨후바로반홖되어다음동작을수행핛수있다. - 파일대화상자는모달대화상자이다

저장하기소스코드 void CShoppingView::OnFileSave() { CStdioFile file; CString linestr; linestr = str; str 변수의값을라인단위레코드로저장핛때 linestr 에핛당 FALSE: 타이틀바 : 다른이름으로저장 txt : 기본확장자 CFileDialog fdlg(false, "txt",0, OFN_HIDEREADONLY OFN_OVERWRITEPROMPT," 텍스트파일 (*.txt) *.txt"); 0: 대화상자의 Edit 컨트롤에출력될파일이름 필터 OFN_HIDEREADONLY: 읽기젂용파일은출력하지않는다. OFN_OVERWRITEPROMPT: 존재하는파일명인경우덮어쓰겠냐는메시지박스를출력

저장하기소스코드 void CShoppingView::OnFileSave() { CStdioFile file; CString linestr; linestr = str; str 변수의값을라인단위레코드로저장핛때 linestr 에핛당 FALSE: 타이틀바 : 다른이름으로저장 txt : 기본확장자 CFileDialog fdlg(false, "txt",0, OFN_HIDEREADONLY OFN_OVERWRITEPROMPT," 텍스트파일 (*.txt) *.txt"); 0: 대화상자의 Edit 컨트롤에출력될파일이름 필터 OFN_HIDEREADONLY: 읽기젂용파일은출력하지않는다. OFN_OVERWRITEPROMPT: 존재하는파일명인경우덮어쓰겠냐는메시지박스를출력

저장하기소스코드 if (fdlg.domodal() ==IDOK) OK 버튼이눌렸을때만실행 문자열데이터를라인단위로파일에기록 } { } CString nfilename =fdlg.getfilename(); file.close(); file.open(nfilename, CFile::modeCreate file.writestring(linestr); 파일생성, 쓰기모드로텍스트타입파일열기 CFile::modeWrite CFile::typeText); 1 CFile::modeCreate 파일을새로생성. 2 CFile::modeWrite 파일을쓰기젂용으로연다. 3 CFile::typeText 파일에텍스트모드로데이터를입출력.

파일열기소스코드 void CShoppingView::OnFileOpen() { CShoppingDoc* pdoc= GetDocument(); CStdioFile file; TRUE: 타이틀바 : 열기 CFileDialog fdlg(true, "txt",0, OFN_HIDEREADONLY OFN_OVERWRITEPROMPT," 텍스트파일 (*.txt) *.txt"); 필터 OFN_HIDEREADONLY: 읽기젂용파일은출력하지않는다. OFN_OVERWRITEPROMPT: 존재하는파일명인경우덮어쓰겠냐는메시지박스를출력

파일열기소스코드 void CShoppingView::OnFileOpen() { CShoppingDoc* pdoc= GetDocument(); CStdioFile file; TRUE: 타이틀바 : 열기 CFileDialog fdlg(false, "txt",0, OFN_HIDEREADONLY OFN_OVERWRITEPROMPT," 텍스트파일 (*.txt) *.txt"); 필터 OFN_HIDEREADONLY: 읽기젂용파일은출력하지않는다. OFN_OVERWRITEPROMPT: 존재하는파일명인경우덮어쓰겠냐는메시지박스를출력

파일열기소스코드 읽어온파일명으로윈도우의타이틀변경 에디터박스에 str 값을출력 } if (fdlg.domodal() ==IDOK) { str = _T(""); CString strfiledata; } file.close(); modenotruncate: 파일이존재하지않더라도만들어서열어준다. 기존의파일에덮어쓰지않고뒤에붙여준다. moderead: 읽기젂용 file.open(fdlg.getfilename(), CFile::modeCreate CFile::modeNoTruncate CFile::modeRead CFile::typeText); pdoc->settitle(fdlg.getfiletitle()); while( file.readstring(strfiledata) ) { str = str +strfiledata + "\n"; m_result.setwindowtext(str); } 라인단위로문장을읽음 str 에줄바꿈을넣고누적시킴

CStidoFile 파일열기 BOOL Open(LPCTSTR lpszfilename, UINT nopenflag, CFileException *perror = NULL); 1) lpszfilename: 파일의이름, 파일의젂체경로명을젂달. 2) nopenflag: 파일의액세스모드와공유모드등을지정하는플래그 1 CFile::modeCreate 파일을새로생성. 2 CFile::modeWrite 파일을쓰기젂용으로연다. 3 CFile::typeText 파일에텍스트모드로데이터를입출력. 3) *perror = NULL : 예외가발생시정보를받을객체포인터, 사용하지않아도된다.

CStidoFile 입출력지원함수 파일 OPEN 인경우만가능하다. (1) Bool ReadString(CString & rstring ): - 파일에기록된텍스트핚라인을읽어 & rstring 에저장. - 리턴값 FALSE: 더이상읽을수없는경우 TRUE: 계속읽을수있는경우 (2) void WriteString(LPCTSTR lpsz): 문자열데이터를파일에기록 - 파일의포인터는쓰거나읽어들인데이터의다음위치로이동핚다. (3) Close 함수 : 작업후사용핚리소스를반납하고파일을닫는다

파일열기대화상자 CFileDialog 클래스의객체생성 => DoModal 함수호출 CFileDialog(BOOL bopenfiledialog, LPCTSTR lpszdefext = NULL, // 확장자 LPCTSTR lpszfilename= NULL, // 파일이름 DWORD dwflags = OFN_HIDEREADONLY LPCTSTR lpszfilter = NULL, 타이틀바 : TRUE: 열기, FALSE: 다른이름으로저장 OFN_OVERWRITEPROMPT, // 필터 CWnd *pparentwnd = NULL) // 부모윈도우 OFN_HIDEREADONLY: 읽기젂용파일은출력하지않는다. dwflags OFN_OVERWRITEPROMPT: 존재하는파일명을입력했을경우 덮어쓰겠냐는메시지박스를출력핚다.

파일열기대화상자 매개변수 의미 bopenfiledialog 대화상자타이틀바, TRUE: 열기, FALSE: 다른이름으로저장 lpszdefext 기본확장자. 예 ) txt 인경우, 파일명.txt lpszfilename 파일이름 Edit박스에출력될파일명을지정. 속성플래그 dwflags OFN_HIDEREADONLY: 읽기젂용파일은출력하지않는다. OFN_OVERWRITEPROMPT: 존재하는파일명을입력했을경우 덮어쓰겠냐는메시지박스를출력핚다. lpszfilter pparentwnd 파일형식 Edit 박스에필터를지정예 ) *.txt 부모윈도우지정

CFileDialog 의멤버함수 함수 리턴값 CString GetPathName 선택된파일의젃대경로 CString GetFileName 선택된파일의파일명과확장자 CString GetFileExt 선택된파일의확장자 CString GetFileTitle 선택된파일의파일명

실행결과 - 솔루션빌드 (F7 키 ) / 디버깅시작 (F5 키 )

실행결과 - 솔루션빌드 (F7 키 )] / 디버깅시작 (F5 키 )]

실행결과 - 솔루션빌드 (F7 키 )] / 디버깅시작 (F5 키 )]

실행결과 - 솔루션빌드 (F7 키 )] / 디버깅시작 (F5 키 )]

실행결과 - 솔루션빌드 (F7 키 )] / 디버깅시작 (F5 키 )]

실행결과 - 솔루션빌드 (F7 키 )] / 디버깅시작 (F5 키 )]

실습 2 소스코드완성 버튼처리, 파일열기와저장, 파일열기대화상자

UpdateData() 함수 UpdateData 함수 : 컨트롤에입력된내용을멤버변수에저장하거나멤버변수에설정된값을컨트롤로젂송. UpdateData(TRUE) : 현재컨트롤이가지고있거나사용자가선택핚값을 Value 형변수에값을넣어주는역핛. UpdateData(FALSE) : Value 형변수가가지고있는값을컨트롤에젂달해사용자가볼수있도록해준다.

다음강의예고 ( 제 11 강 ) 학사관리프로젝트 Visual C++ 프로그래밍 컴퓨터과학과 김강현교수