MFC 프로그래밍

Similar documents
<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - hci2-lecture1.ppt

Microsoft PowerPoint - hci2-lecture1.ppt

5장 MFC기반 다지기

1장 윈도우 프로그래밍 들어가기

Microsoft PowerPoint - 04windows.ppt

<33372DC0A9B5B5BFECC7C1B7CEB1D7B7A1B9D62E687770>

윈도우 프로그래밍

Chapter 1. MFC 시작하기

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

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

<312DBED5BACEBCD328B8D3B8AEB8BB2CB8F1C2F7292DBCF6C1A42E687770>

PowerPoint 프레젠테이션

윈도우즈 프로그래밍

유저영역후킹탐지시스템 팀 명 : D.N.F (Do Not Fishing) 지도교수 : 유승재교수님 팀 장 : 신동순 팀 원 : 서현찬이치목 중부대학교정보보호학과

윈도우시스템프로그래밍

Microsoft PowerPoint - hci2-lecture3.ppt

Microsoft PowerPoint - hci2-lecture5-messagemap.ppt

Microsoft PowerPoint - hci2-lecture3.ppt

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

04장 메시지 처리 유형

Microsoft PowerPoint - 09-CE-14-리스트콤보박스

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

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

2014 년정보보호졸업작품보고서 파일유출방지시스템 지도교수님 : 양환석교수님 팀명 : LKC Security 팀원 : 이호영, 김상우, 최유택 중부대학교정보보호학과

슬라이드 1

예제와 함께 배워보는 OllyDbg사용법

untitled

Visual C++의 개요

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

Microsoft PowerPoint - CPP_chap1

BMP 파일 처리

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

<4D F736F F F696E74202D203036C0E520BBE7BFEBC0DA20C0CEC5CDC6E4C0CCBDBA205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - CSharp-10-예외처리

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

DLL(Dynamic Linked Library)

IS119_Message.Hooking_이성재.hwp

윈도우시스템프로그래밍

C++ Programming

Æí¶÷4-¼Ö·ç¼Çc03ÖÁ¾š

<4D F736F F F696E74202D203039C0E520B4EBC8ADBBF3C0DA205BC8A3C8AF20B8F0B5E55D>

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

Microsoft PowerPoint - CPP_chap3

Programming hwp

쉽게 풀어쓴 C 프로그래밍

그래픽 프로그래밍

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

슬라이드 1

Chapter #01 Subject

PowerPoint Presentation

윈도우시스템프로그래밍

歯Lecture2.PDF

Microsoft PowerPoint - 09-CE-25-오목게임

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

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

Microsoft PowerPoint - 09-CE-24-채팅 프로그램

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

슬라이드 1

슬라이드 1

<4D F736F F F696E74202D203032C0E520C0AFC6BFB8AEC6BC20C5ACB7A1BDBABFCD20C1FDC7D520C5ACB7A1BDBA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

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

Microsoft PowerPoint - hci2-lecture6.ppt

VISLAB 박제강 1. 시작하기전에영상관련알고리즘을개발하는과정에서작성한프로그램을테스트하고피드백하는작업은빈번하게발생한다. 이때기존콘솔 (Console) 형태로작성된프로그램의경우테스트작업을유동적으로조절할수없기때문에작업의효율이떨어진다. 반면 GUI(Graphical Use

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft Word - hci07-final-answer.doc

개요 1. 후킹이란? 후킹의정의.. 2 후킹의종류 2 앞으로 후킹프로그램을위한사전지식들 Window 에서 data 입력과정.. 3 DLL ( Dynamic Link Library ).. 4 메시지후킹을위해필요한지식들 5 3. 후킹프로그램제작에필요한 API

C++ Programming

ALTIBASE 사용자가이드 Templete

슬라이드 1

Microsoft PowerPoint - hci2-lecture6.ppt

Microsoft PowerPoint - 09-CE-7-선과 도형

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Chapter_02-3_NativeApp

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

02 C h a p t e r Java

17장 클래스와 메소드

03_queue

MFC 프로그래밍

유니티 변수-함수.key

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

슬라이드 1

윈도우시스템프로그래밍

Programming hwp

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

윈도우즈 프로그래밍

PowerPoint Presentation

Programming hwp

PowerPoint 프레젠테이션

Microsoft PowerPoint - hci2-lecture7.ppt

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-2pointer.ppt

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

Design Issues

초보자를 위한 C# 21일 완성

Network Programming

Microsoft PowerPoint - hci2-lecture2.ppt [호환 모드]


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

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

Transcription:

윈도우프로그래밍 Visual C++ 2010 MFC Programming 1 장. 윈도우프로그래밍기초

윈도우운영체제의특징 그래픽사용자인터페이스 시스템메뉴타이틀바메뉴최소 / 최대 / 닫기버튼 툴바 대화상자 클라이언트영역 상태표시줄 스크롤바

윈도우운영체제의특징 메시지구동구조

윈도우운영체제의특징 멀티태스킹과멀티스레딩 멀티태스킹 (Multitasking) 운영체제가여러개의응용프로그램을동시에실행 멀티스레딩 (Multithreading) 응용프로그램내부에서여러개의실행흐름 (= 스레드 ) 을동시에진행

윈도우응용프로그램의특징 API 호출문집합 API (Application Programming Interface) 윈도우운영체제가응용프로그램을위해제공하는각종함수의집합

윈도우응용프로그램의특징 메시지핸들러집합 메시지핸들러 (message handler) 메시지를받았을때동작을결정하는코드 윈도우프로시저 : 메시지핸들러의집합

윈도우응용프로그램의특징 실행파일과 DLL 집합 DLL ( Dynamic-Link Library ) 프로그램이실행중에결합하여사용할수있는코드와리소스의집합

윈도우응용프로그램의특징 장치독립성 주변장치가바뀌어도장치드라이버 (Device Driver) 만설치하면프로그램을수정하지않고실행할수있음 하드웨어장치 ( 예 : 프린터, 모니터, 키보드, 네트워크 ) 의제조사및모델에관계없이동일한응용프로그램작성가능

윈도우응용프로그램의개발방식 SDK (Software Development Kit) 특징 윈도우 API 응용프로그램코드 (C/C++ 언어 ) 장점 API를직접다루기때문에세부제어가가능함 윈도우운영체제가제공하는모든기능을사용가능 생성코드의크기가작고속도도빠름 단점 다른개발방식에비해생산성이매우낮음

윈도우응용프로그램의개발방식 RAD (Rapid Application Development) 특징 시각적화면디자인 응용프로그램코드 (Visual Basic 등 ) 장점 간편하게직관적으로프로그래밍할수있음 ( 생산성이높음 ) 단점 생성코드의크기가크고실행속도도떨어지는편임 윈도우운영체제가제공하는모든기능을활용한세부적인제어가어려운경우가있음

윈도우응용프로그램의개발방식 클래스라이브러리 특징 클래스라이브러리 응용프로그램코드 ( 객체지향언어 ) 장점 SDK를이용한방식보다생산성이높음 RAD 개발방식보다코드크기와실행속도면에서유리함 단점 초기학습에필요한시간이길다 객체지향프로그래밍 클래스라이브러리의구조와기능, 각클래스의관계파악

윈도우응용프로그램의개발방식.NET 프레임워크 윈도우운영체제에설치할수있는소프트웨어개발및실행환경 특징 공용언어런타임 (CLR, Common Language Runtime) 이라는소프트웨어가상머신을제공하며, 가상머신의제어하에응용프로그램이구동됨 ( 장치독립성 ) 윈도우 API 에버금가는방대한라이브러리를제공하며, 언어에상관없이라이브러리를사용가능 ( 언어독립성 )

간단한 SDK 프로그램작성 - HelloSDK SDK 프로그램기본골격 실습 1-1 (p.36) 1 윈도우클래스를정의 ( 초기화 ) 하고운영체제에등록함 2 윈도우를생성하고화면에보이게함 3 메시지루프를구동함 4 윈도우프로시저에서메시지를처리함

간단한 SDK 프로그램작성 - HelloSDK 프로젝트종류선택

간단한 SDK 프로그램작성 - HelloSDK 프로젝트옵션변경

간단한 SDK 프로그램작성 - HelloSDK 소스파일추가 (1)

간단한 SDK 프로그램작성 - HelloSDK 소스파일추가 (2)

간단한 SDK 프로그램작성 - HelloSDK 실행결과

간단한 SDK 프로그램작성 - HelloSDK HelloSDK 예제코드 (1/4) #include <windows.h> 1 헤더파일 // WinMain 함수에서참조하므로함수원형을선언한다. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) { WNDCLASS wndclass; HWND hwnd; MSG msg; 2 메인함수 // 윈도우클래스를초기화하고운영체제에등록한다. wndclass.style = CS_HREDRAW CS_VREDRAW; // 스타일지정 wndclass.lpfnwndproc = WndProc; // 윈도우프로시저이름 wndclass.cbclsextra = 0; // 여분메모리 (0 바이트 ) wndclass.cbwndextra = 0; // 여분메모리 (0 바이트 ) wndclass.hinstance = hinstance; // 인스턴스핸들 wndclass.hicon = LoadIcon(NULL, IDI_APPLICATION); // 아이콘모양 wndclass.hcursor = LoadCursor(NULL, IDC_ARROW); // 커서모양 3 윈도우클래스초기화와등록

간단한 SDK 프로그램작성 - HelloSDK HelloSDK 예제코드 (2/4) wndclass.hbrbackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // 배경 ( 흰색 ) wndclass.lpszmenuname = NULL; // 메뉴 (NULL-> 메뉴없음 ) wndclass.lpszclassname = TEXT("HelloClass ); // 윈도우클래스이름 if(!registerclass(&wndclass)) return 1; // 윈도우를생성하고화면에나타낸다. hwnd = CreateWindow(TEXT("HelloClass ), TEXT("HelloSDK ), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hinstance, NULL); ShowWindow(hwnd, ncmdshow); // 메시지큐에서메시지를하나씩꺼내서처리한다. while(getmessage(&msg, NULL, 0, 0) > 0){ TranslateMessage(&msg); DispatchMessage(&msg); } 4 윈도우생성 5 메시지루프 } return msg.wparam;

간단한 SDK 프로그램작성 - HelloSDK HelloSDK 예제코드 (3/4) LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { HDC hdc; PAINTSTRUCT ps; TCHAR *str = TEXT("Hello, SDK ); 6 윈도우프로시저 // 발생한메시지의종류에따라적절히처리한다. switch(message){ case WM_CREATE: return 0; case WM_LBUTTONDOWN: MessageBox(hwnd, TEXT(" 마우스클릭! ), TEXT(" 마우스메시지 ), MB_OK); return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); TextOut(hdc, 100, 100, str, lstrlen(str)); EndPaint(hwnd, &ps); return 0;

간단한 SDK 프로그램작성 - HelloSDK HelloSDK 예제코드 (4/4) case WM_DESTROY: PostQuitMessage(0); return 0; } } // 응용프로그램이처리하지않은메시지는운영체제가처리한다. return DefWindowProc(hwnd, message, wparam, lparam);

SDK 프로그램기본구조 SDK 프로그램동작원리

간단한 MFC 프로그램작성 - HelloMFC MFC 프로그램기본골격 1 응용프로그램클래스정의 2 메인 (= 프레임 ) 윈도우클래스정의 3 응용프로그램객체선언 4 메시지맵선언 실습 1-2 (p.47)

간단한 MFC 프로그램작성 - HelloMFC 프로젝트종류선택

간단한 MFC 프로그램작성 - HelloMFC 프로젝트옵션변경

간단한 MFC 프로그램작성 - HelloMFC 소스파일추가 (1)

간단한 MFC 프로그램작성 - HelloMFC 소스파일추가 (2)

간단한 MFC 프로그램작성 - HelloMFC 프로젝트속성변경

간단한 MFC 프로그램작성 - HelloMFC 실행결과

간단한 MFC 프로그램작성 - HelloMFC HelloMFC 예제코드 (1/3) #include <afxwin.h> // 응용프로그램클래스를선언한다. class CHelloApp : public CWinApp { public: virtual BOOL InitInstance(); }; 1 헤더파일 2 클래스선언부 // 메인윈도우클래스를선언한다. class CMainFrame : public CFrameWnd { public: CMainFrame(); protected: afx_msg void OnPaint(); afx_msg void OnLButtonDown(UINT nflags, CPoint point); DECLARE_MESSAGE_MAP() };

간단한 MFC 프로그램작성 - HelloMFC HelloMFC 예제코드 (2/3) // 응용프로그램객체를선언한다. CHelloApp theapp; // 응용프로그램클래스를정의한다. BOOL CHelloApp::InitInstance() { m_pmainwnd = new CMainFrame; m_pmainwnd->showwindow(m_ncmdshow); return TRUE; } 3 응용프로그램객체 4 클래스정의부 // 메인윈도우클래스를정의한다. CMainFrame::CMainFrame() { Create(NULL, _T("HelloMFC )); }

간단한 MFC 프로그램작성 - HelloMFC HelloMFC 예제코드 (3/3) void CMainFrame::OnPaint() { CPaintDC dc(this); TCHAR *msg = _T("Hello, MFC ); dc.textout(100, 100, msg, lstrlen(msg)); } void CMainFrame::OnLButtonDown(UINT nflags, CPoint point) { MessageBox(_T(" 마우스클릭! ), _T( " 마우스메시지 )); } // 메시지맵을선언한다. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_PAINT() ON_WM_LBUTTONDOWN() END_MESSAGE_MAP() 5 메시지맵

MFC 프로그램기본구조 MFC 프로그램동작원리

비주얼 C++ 개발환경 비주얼 C++ 통합개발환경 메뉴 툴바 편집창 솔루션과프로젝트 출력창 상태표시줄

비주얼 C++ 개발환경 솔루션과프로젝트 프로젝트추가

비주얼 C++ 개발환경 소스파일추가

비주얼 C++ 개발환경 솔루션탐색기 / 클래스뷰 / 리소스뷰