Win32 API, MFC RegisterWindowMessage

Windows CE 2014. 10. 27. 14:29

MFC에서 RegisterWindowMessage를 사용하는 경우에는

 

보통 MainFrame의 cpp 파일에

static const UINT WM_MY_REG_MSG = RegisterWindowMessage( _T("My_Register_Window_Message") );

이런 식으로 메시지 ID를 선언하고 메시지를 등록시키고

 

보낼때는

PostMessage( HWND_BROADCAST, WM_MY_REG_MSG, wParam, lParam );

 

받고자 할때는

Message Map에

ON_REGISTERD_MESSAGE( WM_MY_REG_MSG, &CMainFrame::OnMyRegMsg );

이런 식으로 메시지 핸들러를 추가하고 아래와 같이 메시지를 처리할 함수를 구현하면 된다.

LRESULT CMainFrame::OnMyRegMsg( WPARAM wParam, LPARAM lParam )

{

//

}

 

Win32 API에서 RegisterWindowMessage를 사용하고자 할 경우에는 메시지 ID를 선언하고

statc UINT WM_MY_REG_MSG;

 

WinMain 함수내에서 메시지를 등록시키고

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR    lpCmdLine, int       nCmdShow)

{

WM_MY_REG_MSG =  RegisterWindowMessage( _T("My_Register_Window_Message") );

 

...

}

 

WinProc 함수내에서

switch문의 case로 처리하지 말고 switch문 이전이나 switch문의 default 부분에서 아래와 같이 처리하면 된다.

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

switch( message )

{

case : ...

default :

{

if( message == WM_MY_REG_MSG )

{

//

return 0;

}

return DefWindowProc(hWnd, message, wParam, lParam);

}

}

}

: