WM_COPYDATA传递数据的问题?怎么直接就“终止”了。
发送端:
HWND hwnd = GetSafeHwnd();
HWND hwndParent = ::GetParent(hwnd);
if(hwndParent != NULL)
{
Message_Param * msg = new Message_Param;
msg->nMsgType = htons(AS_CHAT);
strcpy( msg->userData, UserData);
COPYDATASTRUCT MyCDS;
MyCDS.dwData = htons(AS_CHAT);
MyCDS.cbData = sizeof(Message_Param);
MyCDS.lpData = &msg;
::SendMessage(hwndParent, WM_COPYDATA, (WPARAM)(HWND)hwnd, (LPARAM)(LPVOID)&MyCDS);
}
接收端:
PCOPYDATASTRUCT pMyCDS;
pMyCDS = (PCOPYDATASTRUCT)pCopyDataStruct;
Message_Param * msg = new Message_Param;
msg = (Message_Param *)pMyCDS->lpData;
其中:
typedef struct _Message_Parm{
int nMsgType;
char userData[200];
}Message_Param;
问题是:
这样写对吗?程序抛错。不知道是哪里的问题?
我跟踪进去发现:MyCDS.lpData 这个里存放一个指针,但不是msg的地址。