인터넷디스크 7 - dankook.ac.kr · 3. 윈도우 탐색기 3.1 윈도우탐색기 실행 윈도우 탐색기에 인터넷디스크 드라이브를 연결하여 파일을 바로
윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용...
-
Upload
rose-dudley -
Category
Documents
-
view
61 -
download
3
description
Transcript of 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용...
![Page 1: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/1.jpg)
01윈도우 프로그래밍 기초:
학습 목표
윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 .
SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .
MFC 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .
비주얼 C++ 개발 환경 사용법을 익힌다 .
![Page 2: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/2.jpg)
2
윈도우 운영체제 특징 (1/3)
그래픽 사용자 인터페이스
![Page 3: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/3.jpg)
3
윈도우 운영체제 특징 (2/3)
메시지 구동 구조
시스템메시지대기열
이벤트 발생
응용 프로그램메시지 대기열 #1
응용 프로그램메시지 대기열 #2
응용 프로그램메시지 대기열 #3
...
처리
대기
처리
![Page 4: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/4.jpg)
4
윈도우 운영체제 특징 (3/3)
멀티태스킹여러 개의 응용 프로그램을 수행
멀티스레딩하나의 응용 프로그램에 여러 개의 실행 흐름을 생성
![Page 5: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/5.jpg)
5
윈도우 응용 프로그램 특징 (1/4)
API 호출문 집합API(Application Programming Interface): 윈도우
운영체제가 응용 프로그램을 위해 제공하는 각종 함수 집합
call API#1
응용 프로그램
call API#2...
call API#3call API#4
...call API#n
![Page 6: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/6.jpg)
6
윈도우 응용 프로그램 특징 (2/4)
메시지 핸들러 집합메시지 핸들러 (Message Handler): 메시지를 받았을
때 동작을 결정하는 코드
윈도우 프로시저 : 메시지 핸들러 집합
메시지 핸들러 #1
응용 프로그램
메시지 핸들러 #2메시지 핸들러 #3메시지 핸들러 #4메시지 핸들러 #5메시지 핸들러 #6
...
...
![Page 7: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/7.jpg)
7
윈도우 응용 프로그램 특징 (3/4)
실행 파일과 DLL 집합DLL(Dynamic-Link Library): 프로그램이 실행 중에
호출할 수 있는 함수 ( 코드 ) 와 리소스
실행 파일
응용 프로그램
DLL #1DLL #2DLL #3DLL #4DLL #5
...
![Page 8: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/8.jpg)
8
윈도우 응용 프로그램 특징 (4/4)
장치 독립적
응용 프로그램 API 장치 드라이버 주변 장치
![Page 9: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/9.jpg)
9
윈도우 응용 프로그램 개발 도구 (1/3)
SDK(Software Development Kit)C 언어로 윈도우 API 를 직접 호출해서 프로그램을
구현 장점
API 를 직접 다루기 때문에 세부적인 제어가 가능하고 , 윈도우 운영체제가 제공하는 모든 기능을 사용할 수 있다 .
생성 코드의 크기가 작고 속도가 빠르다 . 단점
생산성이 낮다 .
![Page 10: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/10.jpg)
10
윈도우 응용 프로그램 개발 도구 (2/3)
RAD(Rapid Application Development)시각적으로 화면을 디자인하고 코드를 추가하는
방법으로 프로그램을 빠르게 개발 장점
생산성이 높다 . 단점
일반적으로 생성 코드의 크기가 크고 실행 속도가 느리다 .
운영체제가 제공하는 모든 기능을 활용한 세부적인 제어가 어렵다 .
![Page 11: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/11.jpg)
11
윈도우 응용 프로그램 개발 도구 (3/3)
클래스 라이브러리 (Class Library)윈도우 응용 프로그램 개발에 필수적인 기능을 객체
지향 언어를 이용하여 클래스로 제공 장점
SDK 보다 생산성이 높다 .RAD 보다 생성 코드의 크기가 작고 실행 속도가 빠르다 .
단점초기 학습에 필요한 기간이 길다 .
– 객체 지향 언어– 클래스 라이브러리 구조와 기능 , 각 클래스의 관계 파악
![Page 12: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/12.jpg)
12
HelloSDK 예제 작성 (1/9)
프로젝트 생성
![Page 13: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/13.jpg)
13
HelloSDK 예제 작성 (2/9)
1 단계 옵션 설정
![Page 14: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/14.jpg)
14
HelloSDK 예제 작성 (3/9)
소스 파일 추가
![Page 15: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/15.jpg)
15
HelloSDK 예제 작성 (4/9)
코드 입력#include <windows.h>// WinMain( ) 함수에서 참조하므로 함수 원형을 선언한다 .LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ HWND hwnd; MSG msg; WNDCLASS wndclass // 윈도우 클래스를 초기화하고 운영체제에 등록한다 . wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance;
![Page 16: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/16.jpg)
16
HelloSDK 예제 작성 (5/9)
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = "HelloClass"; if(!RegisterClass(&wndclass)) return -1;
// 윈도우를 생성하고 화면에 보이게 한다 . hwnd = CreateWindow("HelloClass", "HelloSDK Application", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd);
![Page 17: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/17.jpg)
17
HelloSDK 예제 작성 (6/9)
// 메시지 대기열에서 메시지를 하나씩 꺼내 처리한다 . while(GetMessage(&msg, NULL, 0, 0) > 0){ TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ HDC hdc; PAINTSTRUCT ps; char *str = "Hello, SDK";
![Page 18: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/18.jpg)
18
HelloSDK 예제 작성 (7/9)
// 메시지 종류에 따라 응용 프로그램이 적절히 처리한다 . switch(message) { case WM_CREATE: return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); TextOut(hdc, 100, 100, str, lstrlen(str)); EndPaint(hwnd, &ps); return 0; case WM_LBUTTONDOWN: MessageBox(hwnd, " 마우스를 클릭했습니다 .", " 마우스 메시지 ", MB_OK); return 0;
![Page 19: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/19.jpg)
19
HelloSDK 예제 작성 (8/9)
case WM_DESTROY: PostQuitMessage(0); return 0; }
// 응용 프로그램이 처리하지 않으면 윈도우 운영체제가 처리한다 . return DefWindowProc(hwnd, message, wParam, lParam);}
![Page 20: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/20.jpg)
20
HelloSDK 예제 작성 (9/9)
실행 화면
![Page 21: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/21.jpg)
21
HelloSDK 예제 분석 (1/7)
헤더 파일
메인 함수
#include <windows.h>
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ ...
![Page 22: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/22.jpg)
22
HelloSDK 예제 분석 (2/7)
윈도우 클래스 초기화와 등록
wndclass.style = CS_HREDRAW | CS_VREDRAW;wndclass.lpfnWndProc = WndProc;wndclass.cbClsExtra = 0;wndclass.cbWndExtra = 0;wndclass.hInstance = hInstance;wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName = NULL;wndclass.lpszClassName = "HelloClass";if(!RegisterClass(&wndclass)) return -1;
![Page 23: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/23.jpg)
23
HelloSDK 예제 분석 (3/7)
윈도우 생성
hwnd = CreateWindow("HelloClass", "HelloSDK Application", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd);
![Page 24: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/24.jpg)
24
HelloSDK 예제 분석 (4/7)
메시지 루프
while(GetMessage(&msg, NULL, 0, 0) > 0){ TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;
![Page 25: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/25.jpg)
25
HelloSDK 예제 분석 (5/7)
윈도우 프로시저
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ HDC hdc; PAINTSTRUCT ps; char *str = "Hello, SDK";
// 메시지 종류에 따라 응용 프로그램이 적절히 처리한다 . switch(message) { case WM_CREATE: return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps);
![Page 26: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/26.jpg)
26
HelloSDK 예제 분석 (6/7)
TextOut(hdc, 100, 100, str, lstrlen(str)); EndPaint(hwnd, &ps); return 0; case WM_LBUTTONDOWN: MessageBox(hwnd, " 마우스를 클릭했습니다 .", " 마우스 메시지 ", MB_OK); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; }
// 응용 프로그램이 처리하지 않으면 윈도우 운영체제가 처리한다 . return DefWindowProc(hwnd, message, wParam, lParam);}
![Page 27: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/27.jpg)
27
HelloSDK 예제 분석 (7/7)
요약
시스템메시지대기열
이벤트 발생
응용 프로그램메시지 대기열 #1
응용 프로그램메시지 대기열 #2
응용 프로그램메시지 대기열 #3
...
응용 프로그램 #1
메시지 루프
메시지 핸들러 #1메시지 핸들러 #2메시지 핸들러 #3
...
DefWindowProc
윈도우 프로시저
![Page 28: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/28.jpg)
28
HelloMFC 예제 작성 (1/9)
프로젝트 생성
![Page 29: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/29.jpg)
29
HelloMFC 예제 작성 (2/9)
1 단계 옵션 설정
![Page 30: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/30.jpg)
30
HelloMFC 예제 작성 (3/9)
소스 파일 추가
![Page 31: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/31.jpg)
31
HelloMFC 예제 작성 (4/9)
코드 입력#include <afxwin.h>
// 클래스 선언부class CHelloApp : public CWinApp{public: virtual BOOL InitInstance();};
class CMainFrame : public CFrameWnd{public: CMainFrame();
![Page 32: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/32.jpg)
32
HelloMFC 예제 작성 (5/9)
protected: afx_msg void OnPaint(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); DECLARE_MESSAGE_MAP()};
// 응용 프로그램 객체CHelloApp theApp;
// 클래스 정의부BOOL CHelloApp::InitInstance(){ m_pMainWnd = new CMainFrame; m_pMainWnd->ShowWindow(m_nCmdShow);
![Page 33: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/33.jpg)
33
HelloMFC 예제 작성 (6/9)
m_pMainWnd->UpdateWindow(); return TRUE;}
CMainFrame::CMainFrame(){ Create(NULL, "HelloMFC Application");}
void CMainFrame::OnPaint(){ char *msg = "Hello, MFC"; CPaintDC dc(this);
![Page 34: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/34.jpg)
34
HelloMFC 예제 작성 (7/9)
dc.TextOut(100, 100, msg, lstrlen(msg));}
void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point){ MessageBox(" 마우스를 클릭했습니다 .", " 마우스 메시지 ");}
// 메시지맵BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_PAINT() ON_WM_LBUTTONDOWN()END_MESSAGE_MAP()
![Page 35: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/35.jpg)
35
HelloMFC 예제 작성 (8/9)
프로젝트 설정 변경
![Page 36: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/36.jpg)
36
HelloMFC 예제 작성 (9/9)
실행 화면
![Page 37: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/37.jpg)
37
HelloMFC 예제 분석 (1/7)
헤더 파일
클래스 선언부
#include <afxwin.h>
class CHelloApp : public CWinApp{public: virtual BOOL InitInstance();};
![Page 38: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/38.jpg)
38
HelloMFC 예제 분석 (2/7)
class CMainFrame : public CFrameWnd{public: CMainFrame();
protected: afx_msg void OnPaint(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); DECLARE_MESSAGE_MAP()};
클래스 선언부 (cont’d)
![Page 39: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/39.jpg)
39
HelloMFC 예제 분석 (3/7)
응용 프로그램 객체
MFC 응용 프로그램의 구조
CHelloApp theApp;
하나의 응용 프로그램 객체
여러 종류의클래스 선언 및 정의
![Page 40: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/40.jpg)
40
HelloMFC 예제 분석 (4/7)
클래스 정의부
BOOL CHelloApp::InitInstance(){ m_pMainWnd = new CMainFrame; m_pMainWnd->ShowWindow(m_nCmdShow); m_pMainWnd->UpdateWindow(); return TRUE;}
CMainFrame::CMainFrame(){ Create(NULL, "HelloMFC Application");}
![Page 41: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/41.jpg)
41
HelloMFC 예제 분석 (5/7)
클래스 정의부 (cont’d)
void CMainFrame::OnPaint(){ char *msg = "Hello, MFC"; CPaintDC dc(this);
dc.TextOut(100, 100, msg, lstrlen(msg));}
void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point){ MessageBox(" 마우스를 클릭했습니다 .", " 마우스 메시지 ");}
![Page 42: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/42.jpg)
42
HelloMFC 예제 분석 (6/7)
메시지맵
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_PAINT() ON_WM_LBUTTONDOWN()END_MESSAGE_MAP()
![Page 43: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/43.jpg)
43
HelloMFC 예제 분석 (7/7)
요약
WinMain( ) // MFC 의 내부에 숨겨진 프로그램 실행의 시작점{ // ptr 은 포인터로서 응용 프로그램 객체의 주소값을 가지고 있다 . ... ptr->InitInstance( ); // 초기화 : 프레임 윈도우 객체를 생성한다 . // 프레임 윈도우 객체의 생성자에서 // 실제 윈도우가 만들어진다 . ptr->Run( ); // 메시지 루프 : 프레임 윈도우에게 메시지를 보낸다 . // 프레임 윈도우가 받은 메시지의 종류에 따라 // 해당 메시지 핸들러가 적절히 호출된다 . ptr->ExitInstance( ); // 종료 : 각종 청소 작업을 수행한다 . ...}
![Page 44: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/44.jpg)
44
비주얼 C++ 통합 개발 환경
![Page 45: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/45.jpg)
45
메뉴
메뉴
팝업 메뉴 = 컨텍스트 메뉴
![Page 46: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/46.jpg)
46
툴바
툴바
사용자 정의 툴바 추가
![Page 47: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/47.jpg)
47
워크스페이스
ClassView FileView ResourceView
![Page 48: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/48.jpg)
48
편집기
![Page 49: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/49.jpg)
49
AppWizard
![Page 50: 윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다 . SDK 응용 프로그램 작성 과정 , 기본 구조 , 동작 원리를 이해한다 .](https://reader034.fdocument.pub/reader034/viewer/2022042502/56813445550346895d9b2ebb/html5/thumbnails/50.jpg)
50
ClassWizard