<보내는 쪽>
TCHAR strTemp[]=L"ListEditor - PlayList Saved!!!";
COPYDATASTRUCT cds;
memset(&cds, 0, sizeof(cds));
cds.dwData = 1; // 식별자
cds.cbData = (_tcslen(strTemp)*2); // 저장할 메모리 크기(BYTE로 입력받음)
cds.lpData = (void*)strTemp; // 포인터
if(m_hWndApp != NULL)
{
RETAILMSG(1,(L"ListEditor - WM_COPYDATA strTemp : %s \r\n",strTemp));
// WM_COPYDATA는 SendMessage()로만 사용가능. PostMessage()는 사용할수 없음.
// m_hWndApp는 보내고자하는 Process의 윈도우 핸들값.
SendMessage(m_hWndApp, WM_COPYDATA, NULL, (LPARAM)&cds);
}
<받는 쪽>
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch (message)
{
case WM_COMMAND:
break;
case WM_COPYDATA:
{
RETAILMSG(1,(TEXT("ListEditor_Launcher - WM_COPYDATA Received!! \r\n")));
PCOPYDATASTRUCT pcp = (PCOPYDATASTRUCT)lParam;
if(pcp->dwData == 1)
{
TCHAR strTemp[255] = {0,};
wcscpy(strTemp, (TCHAR*)pcp->lpData);
strTemp[pcp->cbData/2] = 0;
RETAILMSG(1,(TEXT("ListEditor_Launcher - WM_COPYDATA strTemp %s \r\n"),strTemp));
}
}
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}