프로그래밍/MFC

가장 간단한 프로세스 통신

이재만박사 2017. 9. 1. 00:50

* IPC 기법 대신 사용하는 방법이다


이 방법을 Broadcase 통신이라고 하는데 

RegisterWindowMessage( ) API 를 이용한다


WPARAM, LPARAM을 이용하여 메시지 통신을 한다



사용 방법은 다음과 같다


* 보내는 프로세스


1. 메시지 등록


UINT nRegisterMessage = RegisterWindowMessage(_T("MyCommunication"));



2. PostMessage를 이용하여 데이터 전송


int nData = 2000;

PostMessage(HWND_BROADCAST, nRegisterMessage, (WPARAM)nData, 0);




* 받는 프로세스


1. 메시지 등록


UINT nRegisterMessage = RegisterWindowMessage(_T("MyCommunication"));



2. 메시지 핸들러 추가


ON_REGISTERED_MESSAGE(nRegisterMessage, &CTestDlg::OnMyHandler)



3. 메시지 처리를 할 함수 구현


LRESULT CTestDlg::OnMyHandler(WPARAM wParam, LPARAM lParam)

{

       int nData = (int)wParam;


       // 그 이외의 함수 처리

}



* 주의  - 최상위 부모에만 전달된다 따라서 자식 윈도우에 전달하고 싶으면 최상위 부모에서 전달해야 한다