#메시지 처리 함수 (WndProc)
메시지 처리 함수(WndProc) 란 WinMain에 메시지 루프에서 전달된 메시지를 처리해주는 함수입니다.
이 WndProc 함수는 WinMain에서 호출하는것이 아닌 운영체제에서 호출합니다.
이렇게 운영체제에서 호출하는 함수를 콜백 함수라고 합니다.
WinMain 내에 메시지 루프는 메시지를 전달하는 역활만 하고
메시지 처리는 모두 이 WndProc 함수에서 처리가 됩니다.
DOS에서는 main 함수만 있으면 프로그램을 작성할 수 있지만
WINAPI에서는 특별한 경우를 제외하고는 메인 함수와 메시지 처리 함수 이 두 함수가 있어야 한다.
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
switch(m.Msg)
{
case APMApiPublic.UWM_CHANGE_HANDLE:,,,,,,,
case APMApiPublic.WM_COPYDATA:,,,,,,
}
}
이렇게 전달된 메시지를 프록시함수는 스위치 문으로 처리합니다.
WM_PAINT , WM_KEYDOWN 등등 전달된 메시지의 종류에 따라 다르게 처리를 합니다.
프로그램 종료 버튼을 누르면 WM_DESTROY 메시지가 실행이 되고
PostQuitMessage(0) 함수가 호출되는데 이 함수는 WM_QUIT 메시지를 생성시켜
프로그램을 종료하게됩니다.
스위치 문을 통과한 뒤 DefWindowProc() 함수를 리턴하게 되는데
이 함수는 메뉴 최소화, 최대화 ,윈도우 이동, 등을 프로그래머가 집적 손대지 않아도
운영체제가 알아서 처리해주는 함수입니다.
비고) Window c를 이용하는 프로그램에서 자주 다루어 졌던 내용입니다.
'c# 언어' 카테고리의 다른 글
WndProc & Message(WM_MOVE) 예제 (0) | 2021.06.16 |
---|---|
GET 방식으로 url을 호출한 후 response를 받아오는 예제 (0) | 2021.06.08 |
#region을 사용하면 #endregion으로 지시문을 종료해야 합니다. (0) | 2021.06.04 |
Integer.ToString("formatting") (0) | 2021.06.02 |
namespace(c#) & package(java) (0) | 2021.05.07 |