利用消息机制实现进程通信
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;
}
下面的代码实现了两个对话框窗口类(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;
}
相关文章推荐
- MFC中,利用消息机制,实现跨进程间的通信
- Android IPC机制(三)——利用AIDL实现跨进程通信
- Android IPC机制利用Messenger实现跨进程通信
- 在VC++ 6.0下利用消息实现内部进程通讯
- VC6.0下利用消息实现内部进程通讯
- 利用套接字实现进程通信一例
- 利用Android的消息机制实现线程同步
- 第四部分 Android中利用Handler实现消息的分发机制
- Android中利用App实现消息推送机制的代码
- 利用共享存储实现父子进程间的通信
- 在VC++ 6.0下利用共享内存、消息实现内部进程通讯
- 利用油槽实现进程之间的通信
- 利用消息机制实现.NET AOP(面向方面编程)--利用ServerContextSink实现多截获
- Windows使用自定义消息实现进程之间通信
- 进程通信-消息机制 .
- 01 storm 源码阅读 storm的进程间消息通信实现netty server实现
- Android中利用Handler实现消息的分发机制(三)
- OpenStack建立实例完整过程源码详细分析(12)----依据AMQP通信架构实现消息发送机制解析之一
- php-通过共享内存实现消息队列和进程通信