Download presentation
Presentation is loading. Please wait.
1
윈도우 일반 공주영상대학 게임과 이 은 순
2
메시지 윈도우 - 이벤트 기반 운영체제 공주영상대학 게임과
3
메시지 메인 루프가 반복되면서 메시지가 들어오는 대로 그때그때 비정기적으로 처리 메시지(message)
응용 프로그램에게 어떤 특정한 종류의 이벤트가 일어났음을 알리는 신호 윈도우즈나 다른 응용프로그램, 또는 사용자로부터 발생 공주영상대학 게임과
4
이벤트 예 윈도우 이벤트 키보드 이벤트 그리기(Drawing) 이벤트 사용자가 윈도우의 크기를 변경
윈도우즈는 응용 프로그램에게 윈도우의 변경된 크기를 알리는 메시지를 전송한다. 키보드 이벤트 사용자가 키보드를 누르면 키가 눌러졌다는 메시지가 응용 프로그램에 전송된다. 응용 프로그램은 그 정보를 처리해서 (메뉴가 뜬다든가 하는) 적절한 행동을 수행한다. 그리기(Drawing) 이벤트 다른 윈도우가 응용 프로그램의 윈도우를 가렸다가 치워지면서 아래에 깔린 윈도우를 다시 그려야 된다면 다시 칠하라는 메시지가 응용 프로그램에 전송된다. 공주영상대학 게임과
5
프로그램 표기법(헝가리-찰스 시모니) Prefix Data Type (Base Type) c char by
BYTE (unsigned char) n short or int (refers to a number) i int x, y short (used as x-coordinate or y-coordinate) cx, cy short (used as x or y; c stands for count) b BOOL (int) w UINT (unsigned int) or WORD (unsigned word) 공주영상대학 게임과
6
프로그램 표기법(헝가리-찰스 시모니) Prefix Data Type (Base Type) l LONG(long) dw
DWORD (unsigned long) fn function s string sz, str string terminated by 0 byte lp 32-bit long pointer h handle msg message 공주영상대학 게임과
7
변수 표기법 핸들(handle) 전치사가 나오고 다음에 변수 이름 다른 객체를 가리키는 32비트 정수를 말한다
핸들의 자료형이 32비트가 아닌 다른 것으로 바뀔 경우를 대비한다 전치사가 나오고 다음에 변수 이름 변수 이름에 포함된 단어의 앞 글자는 대문자 예 szName: NULL로 끝나는 문자열 dwHitList: WORD (H와 L이 대문자임을 알 수 있음) lpData: 무언가를 가리키는 32비트 포인터 lpwData: 하나의 WORD를 가리키는 32비트 포인터 g 와 밑줄(_)을 앞에 넣어서 변수가 전역변수임을 나타내기도 한다. 예를 들어 g_lTime 은 LONG 형인 전역 변수이다. 공주영상대학 게임과
8
함수 표기법 함수 : 단어들 사이에 밑줄 없이 단어 첫 글자를 대문자로 예 WORD IsFull(void);
int LoadBitmap(void); BOOL IsRunning(void); 공주영상대학 게임과
9
타입정의와 상수 새로 정의되는 자료형이나 상수는 모두 대문자 밑줄을 사용하며, 그렇게 엄밀하진 않다. 예
typedef unsigned char UCHAR; typedef int BOOL; #define MAX_BRAINS 100 공주영상대학 게임과
10
윈도우 프로그램 부분들 Win32 라이브러리 지정 include 파일 사용
WinMain() 함수로 진입점(entry point) 지정 : int PASCAL WinMain(HINSTANCE hInstance, …………) 윈도우즈 클래스 지정(속성 정의) : style, size, icon, cursor….. 윈도우즈 클래스 등록 : RegisterClassEx($winclass) 윈도우 생성 : CreateWindowEx(………………) 윈도우 보이기 : ShowWindow(…………………) 공주영상대학 게임과
11
이벤트 처리기(event handler) 마련하기
필요에 따라 이벤트 루프 마련하기 이벤트 처리기(event handler) 마련하기 공주영상대학 게임과
12
윈도우즈 응용 프로그램의 진입점 main() 과 유사 int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow); 함수의 형이 WINAPI로 선언: 함수가 PASCAL 호출 규약을 사용하며, 32비트라는 것을 의미 hinstance : 응용 프로그램 인스턴스의 핸들 hprevinstance는 거의 쓸모가 없는데 이전 인스턴스의 핸들에 사용 lpcmdline이란 인자는 명령행 인자를 가리키는 포인터 ncmdshow : 윈도우즈 응용 프로그램이 초기에 보여지는 방식 공주영상대학 게임과
13
윈도우 클래스 속성 선언 윈도우 클래스 속성선언을 위한 변수 선언
WNDCLASSEX winclass; // 윈도우즈 클래스 선언 HWND hwnd; // 윈도우 핸들 MSG msg; // 메시지 선언 공주영상대학 게임과
14
윈도우 클래스 속성 선언 윈도우 클래스 멤버들 초기화 winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; winclass.lpfnWndProc = WindowProc; // 메시지처리기의 명칭정의 winclass.cbClsExtra = 0; winclass.cbWndExtra = 0; winclass.hInstance = hInstance; CS_DBLCLKS : 마우스 더블클릭 CS_OWNDC : 윈도우가 DC를 독점적으로 사용하도록 허용 CS_HREDRAW | CS_VREDRAW : 작업영역의 가로/세로가 조정되면 윈도우를 다시 그리도록 함 공주영상대학 게임과
15
윈도우 클래스 속성 선언 윈도우 클래스 멤버들 초기화(계속)
winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); winclass.hCursor = LoadCursor(NULL, IDC_ARROW); winclass.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH); winclass.lpszMenuName = NULL; winclass.lpszClassName = WINDOW_CLASS_NAME; winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); LoadIcon() LoadCursor() GetStockObject() 공주영상대학 게임과
16
윈도우 클래스 등록 윈도우 클래스 등록 if (!RegisterClassEx(&winclass)) return 0;
공주영상대학 게임과
17
윈도우 생성 if (!(hwnd = CreateWindowEx(NULL, WINDOW_CLASS_NAME, //윈도우 클래스 이름 NULL, //윈도우 타이틀바에 쓰여지는 이름 WS_POPUP, //윈도우 스타일 , // 윈도우가 그려질 X좌표 , // 윈도우가 그려질 X좌표 GetSystemMetrics(SM_CXSCREEN), //윈도우 너비 GetSystemMetrics(SM_CYSCREEN), //윈도우 높이 NULL, //부모윈도우 NULL, //메뉴핸들 hInstance, // 응용프로그램의 인스턴스 NULL))) // lParam의 인수 return 0; 공주영상대학 게임과
18
메시지 루프 while(GetMessage(&msg,NULL,0,0)) { ProcessHere(); // 메인 루틴 TranslateMessage(&msg); // 메시지처리하기로 보낸다 DispatchMessage(&msg); } ReleaseObject(); return(msg.wParam); 공주영상대학 게임과
19
MSG 구조체 typedef struct tagMSG { HWND hwnd; //윈도우 핸들 UINT message; //메시지 내용 WPARAM wParam; //메시지 부가정보 LPARAM lParam; //메시지 부가정보 DWORD time; //메시지 발생시간 POINT pt; //메시지 발생시 마우스 위치 } MSG; 공주영상대학 게임과
20
공주영상대학 게임과
Similar presentations