WM_COPYDATA传递数据的问题?怎么直接就“终止”了。

angelcool angelcool 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
发送端:
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的地址。
...全文
评论 6
收藏 已收藏
分享
返回顶部
angelcool
VC/MFC 16,550 成员 421,606 内容