Presentation is loading. Please wait.

Presentation is loading. Please wait.

윈도우 운영체제와 윈도우 응용 프로그램의 특징 SDK 응용 프로그램 MFC 응용 프로그램

Similar presentations


Presentation on theme: "윈도우 운영체제와 윈도우 응용 프로그램의 특징 SDK 응용 프로그램 MFC 응용 프로그램"— Presentation transcript:

1 윈도우 운영체제와 윈도우 응용 프로그램의 특징 SDK 응용 프로그램 MFC 응용 프로그램
윈도우 프로그래밍 기초 윈도우 운영체제와 윈도우 응용 프로그램의 특징 SDK 응용 프로그램 MFC 응용 프로그램

2 윈도우 운영체제의 특징 (1) 그래픽 사용자 인터페이스(GUI)
Windows 3.1 (16비트), Windows 95 (32비트) Windows XP(32비트), Windows 7 (64비트) 툴바 시스템 메뉴 메뉴 상태 표시줄 최소/최대/닫기 버튼 대화상자 스크롤 바 클라이언트 영역(Client Area)

3 윈도우 운영체제의 특징 (2) 메시지 구동 구조 이벤트 발생 대기 ... 시스템 메시지 큐 메시지 큐 #3 메시지 큐 #2
응용 프로그램 메시지 큐 #1 메시지 큐 #2 메시지 큐 #3 ... 처리 대기

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

5 윈도우 응용 프로그램의 특징 (1) 메시지 핸들러 집합 메시지 핸들러(Message Handler)란?
메시지를 받았을 때 동작을 결정하는 코드 메시지 핸들러의 집합을 윈도우 프로시저(Window Procedure)라 부름 응용 프로그램 메시지 핸들러 #1 메시지 핸들러 #2 메시지 핸들러 #3 메시지 핸들러 #4 메시지 핸들러 #5 메시지 핸들러 #6 ...

6 윈도우 응용 프로그램의 특징 (2) API 호출문 집합
윈도우 API(Application Programming Interface)란? 윈도우 운영체제가 응용 프로그램을 위해 제공하는 각종 함수의 집합 16비트 윈도우에서는 Win16 API, 32 또는 64비트 윈도우에서는 Win32 API 응용 프로그램 call API#1 call API#2 ... call API#3 call API#4 ... call API#5

7 윈도우 응용 프로그램의 특징 (3) 실행 파일과 DLL 집합 DLL(Dynamic-Link Library)이란?
프로그램이 실행 중에 결합하여 사용할 수 있는 코드와 리소스의 집합 윈도우 운영체제가 제공하는 API는 DLL 형태로 제공되며, 응용 프로그래머는 필요한 기능을 DLL로 제작하기도 함 응용 프로그램 실행 파일 DLL #1 DLL #2 DLL #3 DLL #4 DLL #5 ...

8 윈도우 응용 프로그램의 특징 (4) 장치 독립성 장치 독립성(Device-Independency)이란?
주변 장치가 바뀌어도 장치 드라이버(Device Driver)만 설치하면 프로그램을 수정하지 않고 실행할 수 있음 응용 프로그램 API 장치 드라이버 주변 장치

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

10 윈도우 응용 프로그램의 개발 방식 (2) RAD(Rapid Application Development)
특징 (비주얼 베이직, 델파이 등) 시각적 화면 디자인  응용 프로그램 코드 장점 간편하게 직관적으로 프로그래밍할 수 있음 빠른 시간 내에 원하는 기능의 프로그램 개발 가능 단점 SDK나 클래스 라이브러리를 이용한 개발 방식보다 생성 코드의 크기가 크고 실행 속도도 떨어지는 편임 윈도우 운영체제가 제공하는 모든 기능을 활용한 세부적인 제어가 어려운 경우가 있음

11 윈도우 응용 프로그램의 개발 방식 (3) 클래스 라이브러리 특징 (MFC, QT 등) 장점 단점
클래스 라이브러리  응용 프로그램 코드(객체지향언어) 장점 SDK를 이용한 방식보다 생산성이 높음 API를 직접 사용해서 세부적으로 제어할 수 있음 RAD 개발 방식보다 코드 크기와 실행 속도 면에서 유리함 단점 객체 지향 프로그래밍에 익숙해야 함 클래스 라이브러리의 구조와 각 클래스의 기능 및 관계를 파악하기 위한 초기 학습 기간이 긴 편임

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

13 HelloSDK 예제 작성 (1) SDK 프로그램 기본 골격
① 윈도우 클래스(WNDCLASS 구조체)를 정의(초기화)하고 운영체제에 등록 ② 윈도우를 생성하고 화면에 보이게 함 ③ 메시지 루프를 구동 ④ 윈도우 프로시저에서 메시지 처리

14 HelloSDK 예제 작성 (2) 프로젝트 종류 선택 (비주얼 스튜디오 2005)

15 HelloSDK 예제 작성 (3) 1단계

16 HelloSDK 예제 작성 (4)

17 SDK 프로그램 기본 구조 (1) HelloSDK 예제 코드 (1/4) #include <tchar.h>
#include <windows.h> // 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; // 1. 윈도우 클래스를 초기화하고 운영체제에 등록한다. 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); // 커서 모양

18 SDK 프로그램 기본 구조 (2) HelloSDK 예제 코드 (2/4)
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // 배경(흰색) wndclass.lpszMenuName = NULL; // 메뉴(NULL->메뉴 없음) wndclass.lpszClassName = TEXT("HelloClass"); // 윈도우 클래스 이름 if(!RegisterClass(&wndclass)) return 1; // 2. 윈도우를 생성하고 화면에 보이게 한다. hwnd = CreateWindow(TEXT("HelloClass"), TEXT("HelloSDK"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, nCmdShow); // 3. 메시지 큐에서 메시지를 하나씩 꺼내서 처리한다. while (GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;

19 SDK 프로그램 기본 구조 (3) HelloSDK 예제 코드 (3/4)
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; TCHAR *str = TEXT("Hello, SDK"); // 4. 발생한 메시지의 종류에 따라 적절히 처리한다. switch(message) { case WM_CREATE: return 0; case WM_LBUTTONDOWN: MessageBox(hwnd, TEXT("마우스를 클릭했습니다."), TEXT("마우스 메시지"), MB_OK); case WM_PAINT: hdc = BeginPaint(hwnd, &ps); TextOut(hdc, 100, 100, str, _tcslen(str)); EndPaint(hwnd, &ps);

20 SDK 프로그램 기본 구조 (4) HelloSDK 예제 코드 (4/4) case WM_DESTROY:
PostQuitMessage(0); return 0; } // 응용 프로그램이 처리하지 않은 메시지는 운영체제가 처리한다. return DefWindowProc(hwnd, message, wParam, lParam);

21 SDK 프로그램 기본 구조 (5) SDK 프로그램 동작 원리 이벤트 발생 응용 프로그램 #1 시스템 윈도우 프로시저 메시지 큐
메시지 큐 #1 메시지 큐 #2 메시지 큐 #3 ... 응용 프로그램 #1 메시지 루프 메시지 핸들러 #1 메시지 핸들러 #2 메시지 핸들러 #3 DefWindowProc() 윈도우 프로시저

22 다른 SDK 예제 작성 (1) 1단계

23 다른 SDK 예제 작성 (2)

24 다른 SDK 예제 작성 (3)


Download ppt "윈도우 운영체제와 윈도우 응용 프로그램의 특징 SDK 응용 프로그램 MFC 응용 프로그램"

Similar presentations


Ads by Google