谁能说一下WM_COPYDATA的接收的具体实现,,比如
我发送的是:
UINT ra[2];
ra[0]=65;
ra[1]=66;
::SendMessage(GetDlgJyHwnd(),WM_COPYDATA,0,(LPARAM)ra);
m_JyDlg.ShowWindow(SW_SHOW);
.....
那我的实现:
BOOL Cxxx::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
// TODO: Add your message handler code here and/or call default .....
return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}
该如何写...
我发送的是:
UINT ra[2];
ra[0]=65;
ra[1]=66;
::SendMessage(GetDlgJyHwnd(),WM_COPYDATA,0,(LPARAM)ra);
m_JyDlg.ShowWindow(SW_SHOW);
.....
那我的实现:
BOOL Cxxx::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
// TODO: Add your message handler code here and/or call default .....
return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}
该如何写...
发送:
UINT ra[2]; // size 8
ra[0]=65;
ra[1]=66; COPYDATASTRUCT cd;
cd.cbData = 8;
cd.lpData = ra; // ptrSendMessage(hTarget, WM_COPYDATA, (WPARAM)hThis, (LPARAM)&cd);接收:BOOL Cxxx::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
// TODO: Add your message handler code here and/or call default UINT* ra = (UINT*) (pCopyDataStruct->cd.lpData);
// 安全的做法是根据 cbData 来,我省略了
UINT a = ra[0];
UINT a = ra[1];
return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}
COPYDATASTRUCT cds;
cds.dwData = 0;
cds.cbData = sizeof(ra);
cds.lpData = ra;
::SendMessage(GetDlgJyHwnd(), WM_COPYDATA, (WPARAM)this->GetSafeHwnd(), (LPARAM)&cds);BOOL Cxxx::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
size_t count = pCopyDataStruct->cbData/sizeof(UINT); // 数组个数
UINT* pra = (UINT*)pCopyDataStruct->lpData; // 数组指针
// 处理数据
...
return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}
到此为止呢,,问题已经被解决了,,
现在呢,,我想问一个题外的问题,,,楼上两位的"C/C++code"的框是怎么出来的呀,,
是不是管理员的身份的人才有这个特别的框的呀??
点第7个....或者自己写UBB: http://forum.csdn.net/help/ubb.html
例如
[code=C#]using System;
[/code]
点第7个....或者自己写UBB:
例如using System;
一种方法
SetWindowLongPtr(hWnd,GWLP_USERDATA,tagPtr/*你的结构指针*/);
接收的时候
GetWindowLongPtr(hWnd,GWLP_USERDATA,&tagPtr/*你的指针*/)
第二种方法
COPYDATASTRUCT st;
DWORD *sp = (DWORD*)malloc(sizeof(DWORD))
st.dwData = NULL;
st.cbData = sizeof(DWORD);
st.lpData = sp;
SendMessage(hWnd/*目标窗体用于接收*/,WM_COPYDATA,(WPARAM)HWND/*发送窗体*/,(LPARAM)&st);
在不明白我也没法了