남 동 선 ㈜ 인포텍 시스템 부설 연구소 전산통계학과 93학번

Slides:



Advertisements
Similar presentations
을지대학교 무선 네트워크 사용 방법 2010 년 06 월 01 일. 을지대학교 무선 네트워크 사용 방법 1. PC 무선랜 카드 활성화 및 체크 1 단계 : 시작 -> 설정 -> 네트워크 설정 2 단계 : 무선 네트워크 설정 선택 -> 마우스 버튼 오른쪽 클릭 -> 사용.
Advertisements

.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
1 컴퓨터정보과 MFC 의 개요 MFC 윈도우 애플리케이션을 생성하기 위해 만들어진 C++ 클래스 라이브러리 애플리케이션 프레임워크를 제공 MFC 의 이점 윈도우 프로그램 전문가로 만들어 준다. 개발시간을 단축시키고, 이식성이 강한 코드를 작성 ActiveX, OLE,
MFC의 개요 MFC MFC의 이점 윈도우 애플리케이션을 생성하기 위해 만들어진 C++ 클래스 라이브러리
컴퓨터 공학 설계 및 실험 I MFC programming
윈도우 프로그래밍 실습 김 창 헌.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
목차 Contents 무선인터넷용 비밀번호 설정방법 Windows 7 Windows 8 Windows XP MAC OS.
MFC Application Frameworks (AFX)
Lecture 2 MFC and Application Frameworks
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Index SendMemo 기능 Q & A 팀 소개 배경 및 목적 구현
Image & Video processing
Database Laboratory, Hong Ik University
Power Java 제3장 이클립스 사용하기.
Visual Basic 설치 컴퓨터응용 및 실습 I.
윤 홍 란 다이알로그(대화상자) 윤 홍 란
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
윤 홍 란 MFC 기초 윤 홍 란
Power Java 제2장 자바 개발 도구.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Microsoft Visual C++ 제 1편 입문편 5장. 샘플 프로그램의 사용자화
CH 1. MFC 전체보기 정보통신공학과 안 재 형.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
C / C++ Programming in multi platform
Visual Basic .NET 처음 사용하기.
Capstone-Design : IoTeam Introduction Abstract
1. C++ 시작하기.
FTP 프로그램 채계화 박재은 박수민.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
분할 윈도, 다중 뷰… 영상 통신 연구실 권 동 진 발표 일 : 04월 27일.
Visual C++ Programming
2장 JSP 개발 환경 설정 이장에서 배울 내용 : JSP 페이지를 작성하기 위한 개발환경을 설정하고, 웹 어플리케이션 개발을 위해 반드시 이해하여야 할 웹 어플리케이션 폴더 구조에 대해 학습한다. 또한 요청된 JSP 페이지가 어떠한 처리과정을 거쳐 응답이 이루어지는가에.
10장 컴퓨터 기반 데이터 획득 응용 프로그램 LabVIEW 사용법
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
강의 개요. 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
SAS Statistical Analysis System 통계패키지 실습 (2011년 1학기)
홀인원2.0 설치 메뉴얼.
영상처리 실습 인공지능연구실.
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
LabVIEW WiznTec 주임 박명대 1.
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
7주차 실습 FPGA 보드 사용법.
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
( Windows Service Application Debugging )
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
청각장애인용 APP 구성 및 사용법.
OpenCV 설정 2.21 만든이 딩딩.
DK-128 개발환경 설정 아이티즌 기술연구소
영상처리 실습 (OpenCV + MFC) Chonbuk National University A.I. Lab.
가장 많이 사용 Accelerator 최상위 WM_COMMAND, OLE 메시지 관련 이벤트 처리만 가능 이 클래스를 상속받아서 다른 이벤트 처리 이벤트 처리 관련 윈도우(창) 최상위 클래스 멀티 테스킹(모듈) CFrameWnd, Cview,
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
메뉴(Menu) 컴퓨터응용 및 실습 I.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
9 브라우저 객체 모델.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
Installation Guide.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
Platform Builder 사용법.
TCP/IP를 이용한 마우스 공유 (Synergy 따라하기)
7 생성자 함수.
BoardGame 보드게임 따라가기.
Presentation transcript:

남 동 선 ㈜ 인포텍 시스템 부설 연구소 전산통계학과 93학번 Visual C++(MFC) 감잡기 남 동 선 ㈜ 인포텍 시스템 부설 연구소 전산통계학과 93학번

대략적인 내용 Class 의 기본 개념 형성  Class 를 모르면 Visual C++를 알 수가 없다. Windows 에 대하여….  Windows를 알면 Visual C++프로그래밍이 쉬워진다. MFC에 대하여….  MFC를 알면 Visual C++이 좋아진다. 실제 구현 예  음성 인식을 이용한 윈도우 제어 시스템

들어가기에 앞서... Visual C++는 컴파일러가 아니다. C++ 컴파일러를 포함하는 완전한 Application 개발 환경 You need to understand the C++ programming langeage. - Class Concept - Object-Oriented Programming Windows application 의 구동 방식과 구성 요소 You must then understand the Microsoft Fundmental Class Hierarchy. 추천도서 : The C++ PROGRAMMING LANGEAGE THIRD EDITION BJARNE STROUSTRUP The Creator of C++ MFC Internals GEORGE SHEPHERD SCOT WINGO

Object-Oriented Programming OOP 프로그래밍에 대한 이해가 필요한 이유 Object 는 윈도우 프로그램의 기본 구성 요소 특히, MFC 는 C++ Class의 집합 Object와 Class Object : 하나의 Entity로서 Attribute과 Method로 정의 Class : 하나의 Object의 세부 내용의 설계도 Object Method Class Car { // attribute int number; // 차량의 번호 // method void Drive(); // 운전 방법 정의 } Attribute

Object-Oriented Programming OOP란 Object(Class)를 중심으로 프로그래밍 하는 방법 Class의 특징 Abstraction Define essential characteristics of an object. Define contracts, or protocols for interaction between classes of object. Ignoring details about how the object is implemented. Encapsulation Ability to combine code and data into one integral unit. Polymorphism 상위 하위 Class에서 각각 원하는 method를 구현 가능 Inheritance Ability to derive new classes from existing ones.

Why need C++ . C++ Object-Oriented Programming 의 특징 (계속) 장점 Coupling(결합도) 모듈(Class 들의 집합)간의 연관정도 수정시 연관된 모든 모듈을 수정 프로그램 개발 속도 저지 모듈간 Coupling을 낮춤 Cohesion(응집도) 한 모듈 내에서의 기능적 연관 정도 Cohesion이 높을 수록 좋음. 좋은 모듈은 사용자에게 cohesive와 가능한 작은 interface를 제공 장점 Object Conception C++ C

Windows 의 동작 원리 Event Message 처리 방식 Handle 방식 Instance 방식 Hardware Device 운용방식 Resource란 무엇인가?

Windows의 동작 원리 Dos Program 과 Windows Program 와 비교 Dos Program Single tasking Multi tasking Interrupt 처리 방식 Event Message 방식

Event Message의 이동 경로 사용자는 마우스나 키보드를 이용하여 특정 프로그램을 종료 시키거나 윈도우의 위치를 이동시키거나 마우스의 오른쪽버튼을 누르거나 하는 사건을 발생 시킴 Send Message 응용 Queue Message Loop GLOBAL System Queue Window Procedure 응용 Queue Message 발생 FIFO 응용 Queue Default Window Procedure Post Message

Message의 종류 사용자에 의해 발생하는 Message Window Management Message Keyboard 나 Mouse등의 입력 장치를 통한 입력에 의해 발생하는 Message 예 1 : WM_KEYDOWN (키보드를 누를 경우 발생) 예 2 : WM_MOUSEMOVE (마우스를 이용할 경우 발생) Window Management Message Window를 직접 관리하기 위해 발생하는 Message 예 1 : WM_DESTROY (윈도우가 종료할 경우 발생) 예 2 : WM_PAINT ( 화면을 다시 그리기 위해 발생) 해당 Message를 처리하는 루틴을 “Message Handler”라고 한다.

Handle 방식 기존의 DOS 방식 Windows 방식 파일핸들 모든 Object에 대하여 사용 HANDLE의 예 윈도우객체, 메모리객체, 메뉴객체, 아이콘객체, 프로그램객체,파일객체 등 HANDLE의 예 HWND : Window에 대한 HANDLE HICON : Icon에 대한 HANDLE HMENU : Menu에 대한 HANDLE HDC : Device Context(장치와의 통로)에 대한 HANDLE

Instance 방식 하나의 프로그램에 대하여 하나의 Instance 존재

Hardware Device 운영방식 기존의 DOS 방식 Windows 방식 BIOS, DMA, PORT등을 통하여 직접 제어 Hardware 장치에 종속된 프로그램 Device Driver 필요 Windows 방식 각각의 Hardware 장치에 알맞은 Driver를 윈도우 시스템에서 미리 내장 Hardware 장치에 독립된 응용 프로그램을 구현

Windows의 H/W 운영 방식 GDI.EXE USER.EXE Windows Application Program Display.drv Display Printer.drv Printer USER.EXE Keyboard.drv Keyboard Windows Application Program Mouse.drv Mouse Sound.drv Sound System.drv Timer H/ W Comm.drv RS-232 Ms-Dos file I/O Memory Management KERNEL.DLL

Graphic User Interface What is ‘Resource.’ Graphic User Interface 응용 프로그램 내에 공통적으로 사용되는 정적 데이터(Menu, Cursor, Icon, Font…)의 증가/중복/SIZE BIG Resource들을 프로그램 Code와 분리하여 작성 Code와 Resource링크

‘Resource’ for Memory Management Program Loading 시 Code 부분과 Data 부분을 동시에 Loading 하지만 Resource는 Disk 잔류 Resource는 필요시 Loading (from *.exe) Resource는 Memory 부족 시 제거 가능

한숨 돌리고...

MFC 소개 MFC (Microsoft Foundation Class)란? MFC의 장점 Win32 API를 기반으로 생성된 C++ 클래스 라이브러리 중요하고 많이 사용되는 모든 윈도우 Application을 작성할 때 골격을 이루는 코드를 작성해 줌 (Application Framework 방식) MFC의 장점 Win32 API를 이용한 작업 보다 빠르게 윈도우 프로그래밍을 습득 복잡한 기능의 Application 개발을 빠르게 할 수 있다. C++가 제공하는 강력한 기능, 디버깅 등을 지원하는 라이브러리를 사용할 수 있다.

계속 MFC 가 제공하는 Class 총 130개 이상의 Class를 포함 직접 사용 가능 Class + Base Class로만 사용되는 Class CObject : 거의 모든 MFC Class의 Base 클래스 어플리케이션 구조 관련 Class Visual Object Class : 버튼, 툴바, 상태바 등의 시각적인 요소 OLE Class Microsoft’s object technology Major goal of OLE : To open up application to the outside world DB 관련 Class ODBC, DAO 범용 클래스 : 특정 Class가 아니라 모든 일반적으로 사용되는 Class 전역 Afx 함수 : Afx...

MFC로 프로그램 개발 순서 Switch (App형태){ case Dialog-Base ;  Resource 편집(Interface Object 생성 및 편집) ;  Message or Button 등의 Handler 생성 및 작성 ; case Single-Document ; Switch (View 형태){ case CView; case CEditView; case CListView; case CRichEditView; case CTreeView; case CScrollView; case CFormView; case CDaoRecordView; case CHtmlView; case COleDBRecordView; case CRecordView; } case Multi-Document ; . . . SourceCompile_Link(); 프로그램 형태구상

계속 Developer Studio MS MFC App Wizard Visual C++ Programmer Class Wizard MS MFC

Example 1  Dialog Base STEP 1 새로운 프로젝트 생성 - MFC AppWizard.exe를 선택 - Project 이름을 입력 - OK 버튼을 누른다.

Example 1  AppWizard Step 1 Application의 형태를 선택 - Dialog based 를 선택한다. - Application에서 지원할 언어를 선택한다. (한국어)

Example 1  AppWizard Step 2 각종 Option을 설정 - 생성될 Dialog 윈도우의 Title을 입력한다. - 나머지는 기본 설정을 그대로 사용한다.

Example 1  AppWizard Step 3 생성되는 Code에 주석을 붙일 것인지 DLL은 어떤 방식으로 사용할 것인지 설정 - 기본 설정을 그대로 사용

Example 1  AppWizard Step 4 - 완료 버튼을 눌러 최종 Code를 생성한다.

Example 1  리소스 편집 STEP 6 Resource 편집기에서 Dialog를 편집한다. - Dialog에 필요한 Control 배치 - 각 Control에 ID 부여 다음은 버튼에 IDC_BUTTON1 이라는 ID를 주고 버튼 Text는 추가 버튼으로 하였음.

Example 1  Handler 추가 STEP 6 Button에 누름에 대한 Handler를 추가한다. - 오른쪽 마우스 버튼으로 Control을 클릭 ClassWizard를 선택 - ClassWizard에서 Add Function버튼을 눌러 Handler추가

Example 1  Handler 작성 STEP 7 생성된 Handler는 버튼을 누를 경우 수행된다. - 버튼을 누를 경우 “버튼을 눌렀습니다.”라는 메시지 박스를 출력 // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CDialogTest1Dlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } // 버튼을 누를 경우 수행되는 Handler void CDialogTest1Dlg::OnButton1() // TODO: Add your control notification handler code here AfxMessageBox("버튼을 눌렀습니다.");

Example 1  Control 제어 STEP 8 Control을 제어하기 위해 ClassWizard를 수행시키고 해당 Control의 Member 변수를 추가 - ClassWizard의 Member Variables Tab를 선택하여 Pro- gress Control의 Member 변수 를 Control형으로 추가한다. 추가된 CProgressCtrl 형 Member 변수

Example 1  CProgressCtrl STEP 9 m_Progress멤버 함수를 사용 하여 Progress 바를 제어 - 사용 방법 Main Dialog의 Member변수 인 m_Progress는 CProgressCtrl 형 이므로... m_Progress.MemberFunction(); CProgressCtrl Member함수 SetRange : Progress 바의 최대 값과 최소 값을 설정한다. SetPos : Progress 바의 현재 위치를 설정한다. // 버튼을 누를 경우 수행되는 Handler void CDialogTest1Dlg::OnButton1() { // TODO: Add your control notification handler code here AfxMessageBox("버튼을 눌렀습니다."); m_Progress.SetRange(0,100); // Range를 0에서 100으로 for(int i=0; i< 100; i++) m_Progress.SetPos(i); // Progress 바를 0에서 100으로 움직인다. }

MFC 프로그램 최초 수행 함수 Dialog를 화면에 띄우는 함수 활용 예 Dialog 가 수행되기 전에 Splash 윈도우를 띄운다. Dialog를 화면에 띄우는 함수 참고 모든 MFC 프로그램은 자동으로 생성되는 ~App 클래스의 멤버 함수인 InitInstance() 함수를 가장 먼저 수행하여 윈도우를 생성하고 화면에 나타낸다.

Example 2  SDI Base 1 2

Example 2  계속 3 4 하나의 프로그램에 대하여 하나의 Instance 존재

Example 2  계속 5 6 하나의 프로그램에 대하여 하나의 Instance 존재

MFC 기본 생성 클래스 각 Class가 어떤 용도로 사용 되는지 중요!! - CMainFrame : CWnd::CFrameWnd Class로 부터 - CSDIApp : CWinApp Class로부터 - CSDIDoc : CDocument Class로 부터 - CSDIView : CWnd::CView Class로 부터 - 위 모든 Class는 CObject::CCmdTarget로 부터 상속 각 Class가 어떤 용도로 사용 되는지 중요!!

(CSingleDocTemplate) Class 별 담당 부분 Visible Object Toolbar (CToolBar) Invisible Object Application (CWinApp-derived) Main frame window (CFrameWnd-derived) 1 n Document template (CSingleDocTemplate) n 1 n 1 Document (CDocument-derived) View (CView-derived) Status bar (CStatusBar)

Example 2  Insert Menu 메뉴 추가 및 편집 관련 항목 최상위 메뉴 - Accelerator : 메뉴등에 대한 단축키 정의 - Menu : 실제 화면에 나타날 메뉴를 편집 최상위 메뉴 생성메뉴의 ID 입력 Caption을 입력

Example 2  Menu Handler ClassWizard를 이용하여서 Menu Click Message(WM_COMMAND)Handler작성

Example 2 실제 추가된 Code WM_COMMAND Message 처리 (수행 메뉴 ID : ID_TEST, 헨들러 : OnTest()) 프로그래머의 의도에 따라 원하는 Code 작성

Example 2  Handler 실제 구현 WM_TIMER - 일정한 시간 간격으로 발생 - msec단위로 지정 Window를 보이고 감추고 등등... WM_TIMER Message 발생 WM_TIMER - 일정한 시간 간격으로 발생 - msec단위로 지정 해당 Timer를 종료 시킴 시키지 않으면 일정 간격으로 무한 루프

Example 3 Window Message Window Message Handler 추가 및 삭제 방법

Example 3 WM_LBUTTONDOWN 1 2 ~View.h 에 추가된 내용 View Class에 WM_LBUTTONDOWN Message handler 구현 3 ~View.cpp 에 추가된 내용

구현결과

또 한숨 돌리고... 음성에 관한 연구 (Speech Signal Processing) 음성 인식 (Speech Recognition) PC, Home Automation, Car, CTI… 실제 구현 예 : 음성 인식 윈도우 제어, 음성 인식 웹 브라우저, 남성 여성 구별 프로그램, 전화망에서 부서 인식 시스템. 화자 인식/확인(Speaker Recognition/Speaker Verification) 보안, CTI 환경에서 본인 인식... 음성 합성 (Text to Speech) 시각장애인용, 많은 양의 TEXT를 출력할 경우...

감잡기 끝~

음성인식을 이용한 Window95 제어 시스템의 구현 Visual C++ 이용하여 개발한 음성 인식 및 윈도우 95/NT 제어 시스템 입니다.

목 차 시스템 구현 목적 및 성능 전체 시스템의 블록 다이어그램 구현된 주요 기능 실제 구동중인 화면 소개

시스템 구현 목적 및 성능 사용자에게 편리한 인터페이스 제공 윈도우 95/NT 초보 사용자에게 쉬운 사용법 제공 70여 개의 자주 사용되는 윈도우 제어 명령 수행 화자 독립 실험 결과 : 5인 평균 인식율 : 99.08 % 화자 종속 실험 결과 : 5인 평균 인식율 : 99.32 % 기존의 인터페이스 새로운 인터페이스 (음성 )

전체 시스템의 블록 다이어그램 자동 음성 구간 검출 음성의 특징 추출 음성 명령 입력 백그라운드 동작 1. 윈도우 포커싱의 감시 해당 윈도우의 메뉴를 동적으로 인식 대상으로 변경한다. 2. 버퍼에 음성 입력 입력된 음성의 분석 3. 동적 DMS 모델 갱신 음성 인식 알고리즘 (OSDP) 윈도우 95 제어 루틴 수행 아래 한글 윈도우 종료 복사 삭제 

구현된 주요 기능 70개의 윈도우 제어 명령어 인식 남성 화자 독립 99.08% 인식율 인식 대상 파일 Drag & Drop로 등록 최상위 창의 메뉴를 자동으로 획득 입력된 음성을 분석하여 자동으로 끝점을 검출 검출된 음성을 Wave 파형으로 출력 마우스 Marking부분을 자동으로 클립보드로 전송 현재 클립보드의 내용의 종류 확인 사용자 사용환경에 영향을 주지 않는 인터페이스 구성 작업표시줄에 아이콘 표시로 인터페이스의 효율적 사용 가능 Windows 95/NT 어플리케이션 Remote 메뉴 제어/수행 및 종료 사용자의 조작에 따른 인식 리스트 다이얼로그 크기 변경 106/103등 Windows 호환 키보드 제어 가능

실제 구동중인 화면 소개(1) 사용자가 추가하고 싶은 단어와 연결 프로그램을 사용자가 추가 하여 사용할 수 있다. 3회 발성으로 단어 등록 완료 인식 단어명과 연결 프로그램을 사용자가 설정한다. 자동으로 입력된 음성의 끝점을 검출하고 결과를 출력해 준다. 음성 검출시 현재 환경의 노이즈 에 따라 입력 레벨이 자동으로 갱신된다.

실제 구동중인 화면 소개(2) 사용자 작업에 영향을 주지 않도록 효율적이고 쉽게 시스템의 기능을 사용할 수 있도록 인터페이스 구현 현재 인식 대상으로 등록된 인식 단어를 사용자에게 표시 인식 중지 인식 중

실제 구동중인 화면 소개(3) 인식 결과를 사용자에게 TEXT로 표시 시스템 마다 서로 다르게 설정되어 있는 입력 레벨 을 일정한 실시간 데이터 를 이용하여 자동으로 조절하는 마이크 마법사 실시간 음성 입력 마이크 입력 레벨 자동 조절

실제 구동중인 화면 소개(4)