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的地址。
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的地址。
...全文
相关推荐
C# 软件之间通讯之WM_COPYDATA
不同C#之间通讯。
Qt使用WM_COPYDATA消息进行进程通信 示例demo
Qt使用WM_COPYDATA消息进行进程通信 示例demo 代码博客: https://blog.csdn.net/qq_29542611/article/details/83478851
3_WM_COPYDATA.zip_CopyData_WM_COPYDATA
this file is WM_COPYDATA
WM_COPYDATA.rar_CopyData_WINCE WM_COPYDATA_WM_COPYDATA_vc2008 th
进程间通讯小程序,用VC2008 编写 WM_COPYDATA 控制发送消息
WM_COPYDATA进程消息传递实例MFC
源对话框发送WM_COPYDATA消息到目标对话框,目标对话框接受WM_COPYDATA消息,实现进程间消息的传递。该结构也可以传递一个结构体,但一定是“值类”,里面不能含有指针。


