<보내는 쪽>
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;
}

Posted by 싸이on
,