消息传送过程中的安全性
最近我发现可以用HGLOBAL为参数发送一些需要大量数据的消息,例如:
CTask task;
CSharedFile file;
CArchive ar(&file,CArchive::store);
task.SaveToArchive(ar);
ar.Close();
HGLOBAL hData = file.Detach();
CWnd* pWnd = GetReceiverWnd();
if(pWnd && pWnd->GetSafeHwnd())
{
pWnd->PostMessage(WM_USER_MSG,0,(LPARAM)hData);
}
接收端反向获取数据就可以了
我不知道这样做是否安全
有高手能不能说明一下,我做过一些小实验,发现PostMessage的参数实际是被拷贝过一次的,目前还没出问题。而且无法跟踪到PostMessage内部,也不知道是怎么实现的,有些不放心。