본문 바로가기

Programming

(86)
메시지 루프 및 MSG 구조체 ㅁ 윈도우즈를 메시지 구동 시스템(Message Driven System)이라고 하며 이 점이 도스와 가장 뚜렷한 대비를 이루는 윈도우즈의 특징이다 ㅁ GetMessage 함수는 읽은 메시지를 MSG형의 구조체에 대입해 주며 이 구조체는 DispatchMessage 함수에 의해 응용 프로그램의 메시지 처리 함수(WndProc)로 전달된다. ㅁ 윈도우즈 프로그램에서 메시지를 처리하는 부분을 메시지 루프라고 하며 보통 WinMain 함수의 끝에 다음과 같은 형식으로 존재한다.while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); } BOOL GetMessage( LPMSG lpMsg, HWND hWnd..
CreateWindow Function HWND CreateWindow(lpszClassName, //lpszClassName 멤버의 이름 기입 lpszWindowName, //윈도우의 타이틀 바에 나타날 문자열 dwStyle, //윈도우의 형태를 지정하는 인수 x, y, nWidth, nHeight, //윈도우의 크기,위치를 지정(픽셀 단위를 사용) hwndParent, //부모윈도우가 있을 때 부모윈도우의 핸들지정 hmenu, //윈도우에서 사용할 메뉴의 핸들 hinst, //프로그램의 핸들을 지정한다 lpvParam) //CREATESTRUCT라는 구조체의 번지이며 특수한 목적에 사용 리턴 값 : CreateWindow 함수는 윈도우에 관한 모든 정보를 메모리에 만든 후 윈도우 핸들을 리턴값으로 넘겨준다.
WNDCLASS 구조체 windows.h에 다음과 같이 정의되어 있는 구조체이다.typedef struct tagWNDCLASS { UINT style; //윈도우의 스타일을 정의한다 WNDPROC lpfnWndProc; //이 멤버는 윈도우의 메시지 처리 함수를 지정한다 int cbClsExtra; //일종의 예약 영역이다 int cbWndExtra; //일종의 예약 영역이다 HINSTANCE hInstance; //이 윈도우 클래스를 사용하는 프로그램의 번호 HICON hIcon; //최소화되었을 경우 출력될 아이콘을 지정한다 HCURSOR hCursor; //윈도우가 사용할 마우스 커서 HBRUSH hbrBackground; //윈도우의 배경 색상을 지정 LPCSTR lpszMenuName; //프로그램이 사용할 메뉴를 ..
WndProc 메시지 처리 함수란 ㅁ WndProc 메시지 처리 함수란 메시지가 발생할 때 프로그램의 반응을 처리하는 일을 하며 WinMain 함수와는 별도로 WndProc이라는 이름으로 존재한다. 윈도우 프로시저(Window Procedure)라는 뜻이지만 통상 읽을 때는 "윈드프록"이라고 읽는다. WndProc은 WinMain에서 호출하는 것이 아니라 윈도우즈에 의해 호출된다. WinMain내의 메시지 루프는 메시지를 메시지 처리 함수로 보내주기만 할 뿐이며 WndProc은 메시지가 입력되면 윈도우즈에 의해 호출되어 메시지를 처리한다. 이렇게 운영체제에 의해 호출되는 응용 프로그램내의 함수를 콜백(CallBack) 함수라고 한다. WndProc의 인수는 모두 4개이며 MSG 구조체의 멤버 4개와 동일하다. hWnd는 메시지를 받을 윈..
WinAPI 에서의 접두어 의미 접두어 원래말 의미 cb Count of Bytes 바이트 수 dw double word 부호없는 long형 정수 h handle 윈도우, 비트맵, 파일 등의 핸들 sz Null Terminated NULL 종료 문자열 w Word 부호없는 정수형 i Integer 정수형 b Bool 논리형 -출처 : www.winapi.co.rk
WinAPI 기본적인 특징 ㅁ windows.h만 포함해 주면 된다. stdio.h나 conio.h, graphics.h 등을 포함해 줄 필요가 없다. ㅁ APIENTRY 지정자는 __stdcall형 호출 규약을 사용한다는 뜻인데 일단은 없다고 생각해도 무방하다 ㅁ 다음으로 차이나는 점은 프로그램의 시작점인 엔트리 포인트(Entry Point)가 main 함수가 아니라 WinMain이라는 점이다 ㅁ 하나는 프로그램의 시작점인 WinMain이며 나머지 하나는 WndProc이다. 도스에서는 main 함수만으로도 프로그램을 작성할 수 있지만 윈도우즈에서는 아주 특별한 경우를 제외하고는 이 두개의 함수가 모두 있어야 한다.
WINAPI 완전정복 기본 예제 파일 실행 파일 컴파일 시 오류 ㅁ WINAPI 완전정복 기본 예제 파일 실행 파일 컴파일 시 오류 ㅁ 내용 c:\documents and settings\administrator\my documents\visual studio 2005\projects\apiwin\apiwin\apiwin.cpp(21) : error C2440: '=' : 'LPSTR'에서 'LPCWSTR'(으)로 변환할 수 없습니다. 가리킨 형식이 관련이 없습니다. 변환하려면 reinterpret_cast, C 스타일 캐스트 또는 함수 스타일 캐스트가 필요합니다. c:\documents and settings\administrator\my documents\visual studio 2005\projects\apiwin\apiwin\apiwin.cpp(27) : er..
Windows HANDLE(핸들) 특징 윈도우즈에서 핸들을 이렇게 많이 사용하므로 우리는 핸들의 일반적인 특성에 관해서 미리 숙지하는 것이 좋다. 핸들은 일반적으로 다음과 같은 특징이 있다. ① 일단 핸들은 정수값이며 대부분의 경우 32비트값이다. 핸들을 사용하는 목적은 오로지 구분을 위한 것이므로 핸들끼리 중복되지 않아야하며 이런 목적으로는 정수형이 가장 적합하다. ② 핸들은 운영체제가 발급해 주며 사용자는 쓰기만 하면 된다. 예를 들어 윈도우를 만들거나 파일을 열면 운영체제는 만들어진 윈도우나 열려진 파일에 핸들을 붙여준다. 사용자는 이 핸들을 잘 보관해 두었다가 해당 윈도우나 파일을 다시 참조할 때 핸들을 사용하면 된다. 사용자가 직접 핸들을 만들 경우란 없다. ③ 같은 종류의 핸들끼리는 절대로 중복된 값을 가지지 않는다. 만약 이렇게 ..

반응형