본문 바로가기
C & C++/C & C++

유니 코드( Unicode ) 환경에서의 WM_COPYDATA 쓰레기 값 제거

by izen8 2014. 4. 29.
반응형

보내는 부분

const wchar_t *sBuff = strData.GetBuffer();

COPYDATASTRUCT cds;

cds.dwData = 5;

cds.cbData = ( wcslen(OLE2CT(strData) ) + 1) * 2;

cds.lpData = (VOID*)OLE2CT(strData);

CWnd *pWnd = CWnd::FindWindow(NULL, L"Chat2");

if(!pWnd) {

    AfxMessageBox(L"Program is not found!");

    return TRUE;

   }

   pWnd->SendMessage(WM_COPYDATA, (WPARAM)m_hWnd, (LPARAM)&cds);

 


 

받는 부분

 

 switch(pCopyDataStruct->dwData) {

 

   CString str;

   wchar_t p_data[512]= {0,};

   wcsncpy(p_data, (wchar_t*)pCopyDataStruct->lpData, 512 );

   SetDlgItemText(IDC_EDIT1, p_data);

 }

 

받는 쪽은 다음중 아무거나

 

wcsncpy(p_data, (wchar_t*)pCopyDataStruct->lpData, 512 );

 

wcsncpy(p_data, (wchar_t*)pCopyDataStruct->lpData, pCopyDataStruct->cbData / 2 );

 

memcpy( p_data, pCopyDataStruct->lpData, min( sizeof(p_data), pCopyDataStruct->cbData) );

 

wcsncpy 은 문자열을 계산을 하죠..2바이트식 불러 오게 됩니다.

 

반응형

댓글