为什么我的WM_COPYDATA消息响应中接受的参数与发送参数不一致?
发送方的代码是:
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = DWORD(_tcslen(m_lpCmdLine));
cpd.lpData = (void*)m_lpCmdLine;
::SendMessage(hMDVWnd, WM_COPYDATA, NULL, (LPARAM)&cpd);
接受方的代码是:
BOOL CMainDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
// TODO: Add your message handler code here and/or call default
if (0 == pCopyDataStruct->dwData)
{
LPTSTR lpCmdLine = (LPTSTR)(pCopyDataStruct->lpData);
DWORD dwSize = DWORD(_tcslen(lpCmdLine)); //注意这里得到的字符串长度与原始长度不一致
CString strInfo;
strInfo = lpCmdLine;
MessageBox(strInfo); //注意这里得到的内容也不一致
return TRUE;
}
//return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}
譬如说我传送的内容是:%200%130%150%130,长度是16
但是接受到的内容是:%200%130。。。后面是一些空心方框♡♡♡♡♡♡,长度是12
为什么呢?