이벤트,메시지란 란?
윈도우 프로그램은 기본적으로 이벤트를 받았을 경우 그에 반응하는 것으로 이루어져 있습니다. 만일 사용자가 프로그램에 있는 버튼을 눌렀을 경우, 프로그램은 버튼을 눌렀다는 이벤트에 반응하여 행동을 합니다.
이를 위해서 윈도우즈는 프로그램에게 메시지를 보냅니다.
즉 사용자 ->버튼을 눌름 ->운영체제 ->메시지를 보냄 ->프로그램 (메시지에 대한 처리)
로 이루어져 있습니다. 또한 운영체제는 메시지 큐라는 것을 메시지를 순서대로,사용자가 행동한 이벤트를 정확히 프로그램에게 주기 위해서,다른 프로그램에게 보내지지 않게 하기 위해서 만듭니다.
윈도우즈 API를 이용한 프로그램의 기본적인 구조는
1.윈도 창에 대한 기본적인 설정을 해준다.
2.윈도 창에 대한 설정을 윈도우즈에 알려준다.
3.윈도 창을 만든다.
4.윈도우 창을 표시한다.
5.메시지가 오기를 기다리며, 메시지가 올 경우 메시지를 처리하는 함수로 메시지에 대한 정보 를 건넨다(메시지 루프).
6.종료하겠다는 메시지가 오면 프로그램을 종료한다.
으로 이루어 져있습니다.
메시지 루프는 반복문으로 이루어져 있는데 C언어를 이용한 구현으로는
{
DispatchMessage(&Message);
}
으로 되어 있습니다.
GetMessage라는 함수는 메시지 큐에 메시지가 있을 때까지 대기했다가 있으면 DispatchMessage함수를 부릅니다.
DispatchMessage함수는 윈도 창에 대한 설정을 할 때, 설정한 메시지 처리 함수에게 메시지 정보를 주고 처리를 시킵니다.
윈도우의 기본적인 메시지는
WM_CREATE : 윈도우 창이 생성될 때 보내시는 메시지 입니다.
WM_DESTROY : 윈도우 창을 닫는다는 이벤트가 발생될 때 보내지는 메시지입니다.
WM_KEYDOWN : 사용자가 키를 누를 때 보내지는 메시지입니다.
WM_MOUSEMOVE : 사용자가 마우스를 움직일 때 보내지는 메시지입니다.
WM_LBUTTONDOWN:사용자가 프로그램 창안에서 왼쪽 마우스 버튼을 눌렀을 때 보내지는 메시지 입니다.
등등이 있습니다.
댓글 없음:
댓글 쓰기