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;