您的位置:首页 > 其它

利用消息机制实现进程通信

2012-07-08 21:42 465 查看
消息是Windows操作系统提供的一种驱动机制,利用消息进行进程通信,就是使用消息激活某种操作的过程,对于进程间的通信,一般采用用户自定义的消息来完成,也可以使用Windows定义的WM_COPYDATA消息来共享数据。

下面的代码实现了两个对话框窗口类(CSendDlg和CReceiveDlg),一个用于接收数据消息,一个用于发送数据消息。

(1)发送数据

void CSendDlg::OnBtnSend()

{

// TODO: Add your control notification handler code here

UpdateData(true);

CWnd *pWnd=CWnd::FindWindow(NULL,_T("Receive"));

if(pWnd==NULL)

{

MessageBox("寻找接收窗口失败!");

return;

}

COPYDATASTRUCT cpd;

cpd.dwData=0;

cpd.cbData=m_send.GetLength();

cpd.lpData=(void *)m_send.GetBuffer(cpd.cbData);

pWnd->SendMessage(WM_COPYDATA,NULL,(LPARAM)&cpd);

}

(2)接收数据

LRESULT OnReceive(WPARAM wParam,LPARAM lParam); //改行添加到头文件中

ON_MESSAGE(WM_COPYDATA,OnReceive) //只要添加这一行进行WM_COPYDATA消息映射

LRESULT CReceiveDlg::OnReceive(WPARAM wParam,LPARAM lParam)

{

COPYDATASTRUCT *p = NULL ;

p = (COPYDATASTRUCT*)lParam;

memcpy(m_receive.GetBuffer((int)p->cbData),p->lpData,p->cbData);

m_receive.ReleaseBuffer();

UpdateData(false);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: