ON_REGISTERED_MESSAGE

다른 프로그램과 메세지를 주고 받는 방법중의 한 가지…

RegisterWindowMessage 함수를 사용하는 경우는 아래와 같이 메세지를 등록한다.

UINT nRegMsg = RegisterWindowMessage("My Message");

여기서 입력으로 들어가는 “My Message” 라는 문자열은 메세지를 서로 주고 받기로 한 프로그램간에 서로 약속한 문자열입니다. 이 함수는 메세지를 송신하는쪽이나, 메세지를 수신하는 쪽이나 모두 수행해야 합니다.

메세지가 등록되어 송수신 준비가 되면 SendMessage 또는 PostMessage 함수로 메세지를 전송하면 됩니다.
이때 메세지가 다른 프로그램으로 전달이 되게 하려면 SendMessage 또는 PostMessage함수의 첫번째 입력 인수로 반드시 HWND_BROADCAST를 지정해야 합니다. 그렇지 않으면 다른 프로그램으로 메세지가 전송되지 않습니다. 이때 wParam, lParam을 이용해서 각각 2Byte와 4Byte의 추가적인 정보를 전달할 수 있습니다.

즉 ::PostMessage(HWND_BROADCAST, nRegMsg, (WPARAM)m_hWnd, (LPARAM)0);
이런식으로 사용하면 됩니다.

메세지를 수신하려는 쪽은 다음의 코드를 추가하면 됩니다.

즉 RegisterWindowMessage로 등록된 메시지를 받을때는 ON_REGISTERED_MESSAGE 매크로를 사용합니다.

즉 ON_REGISTERED_MESSAGE(nRegMsg, OnMessageFunc) 이런 식으로 메세지 수신을 처리하는 함수를 등록해 줍니다. 그리고 이 처리함수에서 메세지 수신을 처리하면 됩니다.

메세지 처리 함수는 다음과 같은 형식을 가집니다.

LRESULT MyClass::OnMessageFunc(WPARAM wParam, LPARAM lParam)
{
    // 작업 코드
    return 0;
}

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다