티스토리 뷰

윈도우 메세지 처리는 윈도우 프로그래밍의 모든 것을 처리하는 것인 셈이다.

 

메세지 처리는 처리하는 메세지에 따라 여라가지 유형이 존재한다.

우선 가장 기본적인 메세지 처리를 보면 윈도우에서 발생하는 메세지를 처리를 하는 것이다.

 

일단 알다시피 메세지 처리는 통칭 WndProc함수에서 처리한다.

윈도우에서 발생하는 메세지는 WM_으로 시작하며, 그 종류는 굉장히 많지만 자주 발생하는 것만 모아 보면

 

1
2
3
4
5
6
7
8
9
WM_SIZE            //윈도우의 크기가 변할 때
WM_MOVE            //윈도우가 이동할 때
WM_CREATE        //윈도우가 생성될 때
WM_DISTROY        //윈도우가 파괴될 때
WM_MOUSEMOVE    //마우스가 움직일 때
WM_LBUTTONDOWN    //마우스 왼쪽 버튼이 눌렸을 때
WM_LBUTTONUP    //마우스 왼쪽 버튼이 돌아올 때 
WM_RBUTTONDOWN    //마우스 오른쪽 버튼이 눌렸을 때
WM_RBUTTONUP    //마우스 오른쪽 버튼이 돌아올 때
cs

 

그 외 키보드에 대한 메세지도 가끔 이용됨

 

기초적인 메세지 처리는 컴파일러가 해주지만

코딩은 아래와 같이 WndProc에서 switch문을 이용해서 각 부분적으로 구현 하면 된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
LRESULT CALLBACK WndProc(HWND hWnd, UINT mesg, WPARAM wParam, LPARAM lParam)
{
    switch (mesg) {
    case WM_CREATE:
        //처리 내용 구현
        break;
    case WM_SIZE:
        //처리 내용 구현
        break;
    case WM_MOVE:
        //처리 내용 구현
        break;
    case WM_MOUSEMOVE:
        //처리 내용 구현
        break;
    case WM_LBUTTONDOWN:
        //처리 내용 구현
        break;
 
//참고로 윈도우가 파괴 될 때의 메세지 처리는 아래와 같이 처리를 미리 해두는게 좋다. 그렇치 아니하면 윈도우는 파괴 되었지만 프로세서는 죽지않아 남아있게 된다.
    case WM_DESTROY:
        PostQuitMessage(0);    //이 함수는 WM_QUIT 메세지(종료시 발생)를 윈도우에게 보낸다.
        return 0;
    }
    return(DefWindowProc(hWnd, mesg, wParam, lParam));
}
cs

 

#C, #C++, #gui, #WinAPI, #메세지, #처리, #WinProc

'C & C++ > API' 카테고리의 다른 글

부모 윈도우와 자식 윈도우 설정  (0) 2014.11.06
컨트롤 윈도우  (0) 2014.11.05
윈도우 생성 - CreateWindow()  (0) 2014.10.23
윈도우 클래스 생성 및 정의 - WNDCLASS  (0) 2014.10.22
윈도우 프로그래밍 기초  (0) 2014.10.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday