WM_COPYDATA ¸¦ »ç¿ëÇÑ ¸Þ¼¼Áö Àü¼Û


1.¿ä¾à

¼­·Î´Ù¸¥ À©µµ¿ì³¢¸®(´Ù¸¥ ÇÁ·Î¼¼½º¿¡µµ Àû¿ëµÊ) µ¥ÀÌÅ͸¦ ÁÖ°í ¹Þ°íÀÚ ÇÒ¶§ À©µµ¿ì¿¡¼­ Á¦°øÇÏ´Â WM_COPYDATA¸¦ »ç¿ëÇØ º¸±â·Î ÇÑ´Ù.


2.º»¹®

ÇϳªÀÇ À©µµ¿ì¿¡´Â À©µµ¿ì°¡ °ü¸®ÇÏ´Â ³í¸®Àû ÁÖ¼Ò°ø°£ÀÌ ÀÖ´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯¶§¹®¿¡ ÇϳªÀÇ À©µµ¿ì¿¡¼­ ´Ù¸¥ À©µµ¿ì·Î Æ÷ÀÎÅ͸¦ ³Ñ°ÜÁÖ°íÀÚ ÇÑ´Ù¸é ±×¸® ½¬¿î¹æ¹ýÀÌ ¾Æ´ÔÀ» ¾Ë ¼ö ÀÖ´Ù. ÇÏÁö¸¸, WM_COPYDATA¸¦ »ç¿ëÇÏ¸é ³í¸®Àû ÁÖ¼Ò°ø°£¿¡ »ó°ü¾øÀÌ ´Ù¸¥ À©µµ¿ì·Î ÇÑÂÊÀÇ ³í¸®Àû ÁÖ¼Ò¸¦ ³Ñ±æ ¼ö ÀÖ´Ù. ¿¹Á¦¸¦ »ìÆìº¸±â·Î ÇÏÀÚ.


3.¿¹Á¦


// source window¿¡¼­.. 

void CSourceWnd::Write(const void* lpBuf, UINT nCount) 

{ 

       CWnd *pTraceWnd = CWnd::FindWindow(TRACEWND_CLASSNAME, NULL); 

       if (pTraceWnd) { 

              COPYDATASTRUCT cds; 

              cds.dwData = ID_COPYDATA_TRACEMSG /* Flag ¿ëµµ */; 

              cds.cbData = nCount; 

              cds.lpData = (void*)lpBuf; 

              pTraceWnd->SendMessage(WM_COPYDATA, 

                     (WPARAM)AfxGetApp()->m_pMainWnd->GetSafeHwnd(), 

                     (LPARAM)&cds); 



       } else { 

              AfxMessageBox("À©µµ¿ì¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù."); 

       } 

} 



---------------------------------------------------------- 

////////////////////////////////////////////////////// 

// target windows¿¡¼­.. 



// ¸Þ¼¼Áö Çڵ鸵 ¼³Ä¡ 

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) 

       //{{AFX_MSG_MAP(CMainFrame) 

       ON_MESSAGE(WM_COPYDATA, OnTraceMsg) 

       . 

       . 

       . 

       //}}AFX_MSG_MAP 

END_MESSAGE_MAP() 





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

{ 

       COPYDATASTRUCT* pcds = (COPYDATASTRUCT*)lParam; 



       // pcds ¸¦ »ç¿ëÇÑ´Ù.. 



       return 0; 

} 


4.Âü°í

MSJ 1996³â 1¿ùÈ£ C/C++ Q&A



- 2001.08.06 Smile Seo -