ㅁ 윈도우즈를 메시지 구동 시스템(Message Driven System)이라고 하며 이 점이 도스와 가장 뚜렷한
대비를 이루는 윈도우즈의 특징이다
ㅁ GetMessage 함수는 읽은 메시지를 MSG형의 구조체에 대입해 주며
이 구조체는 DispatchMessage 함수에 의해 응용 프로그램의 메시지 처리 함수(WndProc)로 전달된다.
- 읽어들인 메시지는 첫번째 인수가 지정하는 MSG 구조체에 저장된다
- 이 함수는 읽어들인 메시지가 프로그램을 종료하라는 WM_QUIT일 경우 False를 리턴하며 그 외의 메시지이면
True를 리턴한다
BOOL TranslateMessage( CONST MSG *lpMsg);
- 키보드 입력 메시지를 가공하여 프로그램에서 쉽게 쓸 수 있도록 해 준다
LONG DispatchMessage( CONST MSG *lpmsg);
- 시스템 메시지 큐에서 꺼낸 메시지를 프로그램의 메시지 처리 함수(WndProc)로 전달한다
ㅁ MSG 구조체
typedef struct tagMSG
{
HWND hwnd; //메시지를 받을 윈도우 핸들이다.
UINT message; //어떤 종류의 메시지인가를 나타낸다. 가장 중요한 값이다
WPARAM wParam; //전달된 메시지에 대한 부가적인 정보를 가진다(32bit)
LPARAM lParam; //전달된 메시지에 대한 부가적인 정보를 가진다(32bit)
DWORD time; //메시지가 발생한 시간이다.
POINT pt; //메시지가 발생했을 때의 마우스 위치이다
} MSG;
대비를 이루는 윈도우즈의 특징이다
ㅁ GetMessage 함수는 읽은 메시지를 MSG형의 구조체에 대입해 주며
이 구조체는 DispatchMessage 함수에 의해 응용 프로그램의 메시지 처리 함수(WndProc)로 전달된다.
ㅁ 윈도우즈 프로그램에서 메시지를 처리하는 부분을 메시지 루프라고 하며 보통
WinMain 함수의 끝에 다음과 같은 형식으로 존재한다.
while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); }BOOL GetMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin,UINT wMsgFilterMax);
- 읽어들인 메시지는 첫번째 인수가 지정하는 MSG 구조체에 저장된다
- 이 함수는 읽어들인 메시지가 프로그램을 종료하라는 WM_QUIT일 경우 False를 리턴하며 그 외의 메시지이면
True를 리턴한다
BOOL TranslateMessage( CONST MSG *lpMsg);
- 키보드 입력 메시지를 가공하여 프로그램에서 쉽게 쓸 수 있도록 해 준다
LONG DispatchMessage( CONST MSG *lpmsg);
- 시스템 메시지 큐에서 꺼낸 메시지를 프로그램의 메시지 처리 함수(WndProc)로 전달한다
WM_QUIT | 프로그램을 끝낼 때 발생하는 메시지이다. |
WM_LBUTTONDOWN | 마우스의 좌측 버튼을 누를 경우 발생한다. |
WM_CHAR | 키보드로부터 문자가 입력될 때 발생한다 |
WM_PAINT | 화면을 다시 그려야 할 필요가 있을 때 발생한다. |
WM_DESTROY | 윈도우가 메모리에서 파괴될 때 발생한다. |
WM_CREATE | 윈도우가 처음 만들어질 때 발생한다. |
ㅁ MSG 구조체
typedef struct tagMSG
{
HWND hwnd; //메시지를 받을 윈도우 핸들이다.
UINT message; //어떤 종류의 메시지인가를 나타낸다. 가장 중요한 값이다
WPARAM wParam; //전달된 메시지에 대한 부가적인 정보를 가진다(32bit)
LPARAM lParam; //전달된 메시지에 대한 부가적인 정보를 가진다(32bit)
DWORD time; //메시지가 발생한 시간이다.
POINT pt; //메시지가 발생했을 때의 마우스 위치이다
} MSG;
반응형