WM_COPYDATA传输数据接收不全问题
我在用WM_COPYDATA在两个进程之间传递字符串的时候,接受端接收到的数据不完全,每次接收到的只能是发送数据的一部分,且随着发送数据的增长而增长,并没有固定的长度。代码发出来大家帮忙看看。
发送端:
wstring sz = _T("1234567890123");
HWND hwnd;
COPYDATASTRUCT mySend;
int _tmain(int argc, _TCHAR* argv[])
{
mySend.cbData = (DWORD)sz.size();
mySend.dwData = sizeof(COPYDATASTRUCT);
mySend.lpData = (LPVOID)sz.c_str();
hwnd = ::FindWindow(NULL, _T("TestChild"));
if(hwnd==NULL)
{
MessageBox(NULL,_T("No Find!"),NULL,MB_OK);
}
else
{
SendMessage(hwnd,WM_COPYDATA,(WPARAM)NULL,(LPARAM)&mySend);
MessageBox(NULL, _T("Sending..."),_T("fathernotice"),MB_OK);
}
return 0;
}
接收端主要部分:
case WM_COPYDATA:
pCopyDataStruct = (COPYDATASTRUCT*)lParam;
strCopyData = (LPCWSTR)pCopyDataStruct->lpData;
MessageBox(NULL,(LPCWSTR)strCopyData,_T("childnotice"),MB_OK);
break;
接收的数据长度正确的,就是内容不对,为什么啊?