共计 642 个字符,预计需要花费 2 分钟才能阅读完成。
WM_COPYDATA 留神点
typedef struct tagCOPYDATASTRUCT {
ULONG_PTR dwData;
DWORD cbData;
PVOID lpData;
} COPYDATASTRUCT, *PCOPYDATASTRUCT;
/********
正文:1、dwData. 为自定义数据;2、cbData. 即 lpData 指向的数据的长度,要是这个变量的值设置谬误,就会导致 WM_COPYDATA 传输 /* 数据失败;3、lpData. 传输的数据. 最好应用根底数据类型;********/
应用 WM_COPYDATA 时要用 SendMessage 而不能应用 PostMessage,因为 SendMessage 是阻塞的,会期待音讯响应窗体解决音讯结束后再返回;而 PostMessage 是异步的,这样就可能会导致当音讯响应窗体接管到 WM_COPYDATA 的时候,COPYDATASTRUCT 对象曾经被析构了,导致拜访数据产生异样;
因为应用 SendMessage,所以不应该在 WM_COPYDATA 中解决数据,能够在音讯响应窗体的 WM_COPYDATA 中先把 COPYDATASTRUCT 对象中的数据复制进去,通过自定义音讯发送到音讯响应窗体,而后立刻返回,来缩小父过程的阻塞工夫。这样就把解决数据的代
case WM_COPYDATA:
{COPYDATASTRUCT* data = (COPYDATASTRUCT*)lParam;
// TODO: 解决 pCopyData->lpData 指向的数据
}
break;
正文完