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

Similar documents
<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

윈도우즈 프로그래밍

Microsoft PowerPoint - 04windows.ppt

MFC 프로그래밍

Microsoft PowerPoint - hci2-lecture1.ppt

윈도우 프로그래밍

Microsoft PowerPoint - hci2-lecture1.ppt

5장 MFC기반 다지기

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

04장 메시지 처리 유형

<312DBED5BACEBCD328B8D3B8AEB8BB2CB8F1C2F7292DBCF6C1A42E687770>

<33372DC0A9B5B5BFECC7C1B7CEB1D7B7A1B9D62E687770>

K&R2 Reference Manual 번역본

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

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

BMP 파일 처리

PowerPoint 프레젠테이션

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

untitled

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

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

Microsoft PowerPoint - lecture2-opengl.ppt

C++ Programming

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

C프로-3장c03逞풚

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - CPP_chap1

슬라이드 1

설계란 무엇인가?

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


PowerPoint 프레젠테이션

슬라이드 1

설계란 무엇인가?

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

Microsoft PowerPoint - [2009] 02.pptx

<4D F736F F F696E74202D203032C0E520C0AFC6BFB8AEC6BC20C5ACB7A1BDBABFCD20C1FDC7D520C5ACB7A1BDBA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap10-함수의활용.pptx

IS119_Message.Hooking_이성재.hwp

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Chapter 1. MFC 시작하기

설계란 무엇인가?

Microsoft PowerPoint - C++ 5 .pptx

C++ Programming

Microsoft PowerPoint - chap03-변수와데이터형.pptx

untitled

untitled

윈도우시스템프로그래밍

Microsoft PowerPoint - 07-Data Manipulation.pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint - chap11-포인터의활용.pptx

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

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

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

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

윈도우시스템프로그래밍

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

윈도우즈 프로그래밍

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

chap10.PDF

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

설계란 무엇인가?

Chapter #01 Subject

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

PowerPoint Template

PowerPoint 프레젠테이션

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

PowerPoint 프레젠테이션


03장.스택.key

Microsoft PowerPoint - Chapter 1-rev

11장 포인터

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

슬라이드 1

2009년 상반기 사업계획

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

슬라이드 1

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

1장. 유닉스 시스템 프로그래밍 개요

14 주차구조체와공용체

제목

Microsoft PowerPoint - Chapter_09.pptx

PowerPoint Template

윈도우시스템프로그래밍

Microsoft PowerPoint - Chapter_04.pptx

Microsoft Word - hook3.doc

슬라이드 1

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

Microsoft PowerPoint - 04-UDP Programming.ppt

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

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

C 프로그래밊 개요

Transcription:

1 장 윈도우프로그래밍들어가기 김성영교수 금오공과대학교 컴퓨터공학부

예제 다음프로그램은언제종료할까? #include <iostream.h> #define QUIT -1 int Func(void) int i; cout << " 입력 : "; cin >> i; return i; void main(void) int Sum = 0, i; cout << " 프로그램시작 " << endl; while ((i = Func())!= QUIT) Sum += i; cout << "Sum = " << Sum << endl; cout << " 프로그램종료 " << endl; 2

간단한 Win32 응용프로그램 (1) Hello.c win32 console application #include <stdio.h> int main() printf("hello World\n" ); return 0; 3

간단한 Win32 응용프로그램 (2) Hello_Win.c win32 console application #include <windows.h> int main() MessageBox( NULL, "Hello World", "Hello", MB_OK ); return 0; 4

간단한 Win32 응용프로그램 (3) Hello_WinMain.c win32 application #include <windows.h> int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, PSTR szcmdline, int icmdshow) MessageBox( NULL, "Hello World", "Hello", MB_OK ); return 0; 5

이벤트처리과정 6

메시지구조체 typedef struct HWND hwnd; UINT message; // 이벤트가발생한윈도우를위한식별자 // 이벤트구분을위한식별자 WPARAM wparam; // 이벤트발생당시의상황 ( 부가 ) 정보를기록 LPARAM lparam; // 이벤트발생당시의상황 ( 부가 ) 정보를기록 DWORD time; POINT pt; MSG // 이벤트발생시간을기록 // 이벤트발생시의마우스좌표를기록 7

Windows Data Type winnt.h 와 windef.h 에재정의 typedef char CHAR; typedef short SHORT; typedef long LONG; typedef unsigned long DWORD; typedef int BOOL; typedef unsigned char BYTE; typedef unsigned short WORD; typedef float FLOAT; typedef int INT; typedef unsigned int UINT; typedef UINT WPARAM; typedef LONG LPARAM; typedef LONG LRESULT; typedef char * LPSTR typedef const char * LPCSTR < 변수명명법의예 > a : 배열 (Array) b : BOOL(Bool) ch : 문자 (Character) cb : 바이트수 (Count of Bytes) dw : 부호없는 long형정수 (Double Word) h : 핸들 (Handle) i : 인덱스 (Index) l : long int n : int sz : NULL로끝나는문자열 w : 부호없는 16bit 정수 (Word) m_ : 멤버변수 g_ : 전역변수 8

프로그램작성흐름 1. WinMain() 의작성 2. 윈도우클래스정의및등록 3. 윈도우생성 4. 윈도우화면출력 5. 메시지루프작성 6. 윈도우프로시저정의 9

실습 1-1 WinMain() 메인함수 - 윈도우생성 1. 윈도우클래스정의 2. 윈도우클래스등록 3. 윈도우생성및출력 - 메시지루프 WndProc() 윈도우프로시저 - 이벤트 ( 메시지 ) 처리 p14 의 HELLO.CPP 입력후실행 10

1. WinMain( ) 작성 #include <windows.h> int WINAPI WinMain( HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow ) return 0; 11

2. 윈도우클래스정의및등록 #include <windows.h> int WINAPI WinMain( HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow ) WNDCLASS WndClass; TCHAR szappname[] = TEXT( "Hello" ); // 윈도우클래스정의 WndClass.style = 0; 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 = szappname; // 윈도우클래스등록 if (!RegisterClass(&WndClass) ) return -1; return 0; 12

윈도우클래스구조체 typedef struct _WNDCLASS UINT style; // 윈도우클래스스타일 WNDPROC lpfnwndproc; // 윈도우프로시저에대한포인터 int cbclsextra; // 윈도우클래스의데이터영역 ( 기본값 0) int cbwndextra; // 윈도우의데이터영역 ( 기본값 0) HINSTANCE hinstance; // 인스턴스핸들 ( 프로그램자신의핸들값 ) HICON hicon; // 윈도우에사용될아이콘핸들 HCURSOR hcursor; // 윈도우영역에서사용될커서핸들 HBRUSH hbrbackground; // 클라이언트영역배경색을표시할브러시핸들 LPCTSTR lpszmenuname; // 윈도우에사용될메뉴이름 LPCTSTR lpszclassname; // 윈도우클래스이름 WNDCLASS, *PWNDCLASS; http://msdn.microsoft.com/ko-kr/library/ms633576.aspx 13

3. 윈도우생성 #include <windows.h> int WINAPI WinMain( HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow ) TCHAR szappname[] = TEXT( "Hello" ); HWND hwnd; // 윈도우생성 hwnd = CreateWindow( szappname, // window class name szappname, // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, // parent window handle NULL, // window menu handle hinstance, // program instance handle NULL // creation parameters ); return 0; 14

CreateWindow( ) HWND CreateWindow( LPCTSTR lpclassname, LPCTSTR lpwindowname, DWORD dwstyle, int x; int y; int nwidth; int nheight; HWND hwndparent; HMENU hmenu; HINSTANCE hinstance; LPVOID lpparam; ); // 등록한윈도우클래스 // 윈도우캡션 // 윈도우스타일 // 윈도우좌측상단의 x좌표 // 윈도우좌측상단의 y좌표 // 윈도우폭 // 윈도우높이 // 부모윈도우의핸들 // 메뉴핸들 // 윈도우를생성한인스턴스핸들 // CREATESTRUCT 구조체를통해전달되는값 http://msdn.microsoft.com/ko-kr/library/ms632679.aspx 15

윈도우스타일 WS_BORDER : 경계를갖는윈도우 WS_CAPTION : 캡션바를갖는윈도우 WS_OVERLAPPED : 캡션바와경계를갖는윈도우 WS_CHILD : 특정윈도우의자식윈도우 WS_POPUP : POPUP 윈도우 WS_MAXIMIZE : 최대화버튼을갖는윈도우 WS_MINIMIZE : 최소화버튼을갖는윈도우 WS_SYSMENU : 캡션바에시스템메뉴를갖는윈도우 WS_THICKFRAME : 크기조정이가능한윈도우 WS_OVERLAPPEDWINDOW : WS_OVERLAPPED WS_CAPTION WS_SYSMENU WS_THICKFRAME WS_MINIMIZEBOX WS_MAXIMIZEBOX WS_POPUPWINDOW : WS_POPUP WS_BORDER WS_SYSMENU WS_CHILDWINDOW : WS_CHILD 16

4. 윈도우화면출력 #include <windows.h> int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) HWND hwnd; hwnd = CreateWindow( szappname, szappname, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hinstance, NULL ); // 윈도우화면출력 ShowWindow( hwnd, ncmdshow ); UpdateWindow( hwnd ); while (1) return 0; 17

ShowWindow( ) BOOL ShowWindow ( HWND hwnd, int ncmdshow ); // 출력할윈도우핸들 // 초기윈도우상태 ncmdshow SW_HIDE : 윈도우를안보이게함 SW_SHOW : 화면에표시 SW_SHOWMAXIMIZED : 윈도우를최대화면으로출력 SW_SHOWMINIMIZED : 윈도우를작업표시줄의아이콘으로표시 18

5. 메시지루프작성 #include <windows.h> int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) HWND hwnd; MSG msg; ShowWindow( hwnd, icmdshow ); // 메시지루프 while ( GetMessage(&msg, NULL, 0, 0) ) TranslateMessage( &msg ); DispatchMessage( &msg ); return msg.wparam; 19

6. 윈도우프로시저정의 #include <windows.h> LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) WndClass.lpfnWndProc = WndProc; // 윈도우프로시저정의 LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam ) switch(message) case WM_DESTROY: PostQuitMessage( 0 ); return FALSE; // 사용자처리의경우반드시 FALSE 을리턴 // 응용프로그램이처리하지않으면윈도우운영체제가처리 return DefWindowProc( hwnd, message, wparam, lparam ); 20