MFC中,利用消息机制,实现跨进程间的通信:
VS2012 Win7 64Bit环境
![](https://i-blog.csdnimg.cn/blog_migrate/c3c77a53c79a1ee1c83147bb25897fc4.png)
CMFCWithOpenGLView.h 中定义消息
#define WM_CONTROL WM_USER+1001
CMFCWithOpenGLView.cpp 中,中键点击发送消息:
void CMFCWithOpenGLView::OnMButtonUp(UINT nFlags, CPoint point)
{
// 获取接收窗口句柄
CWnd *pWnd=CWnd::FindWindow(NULL,_T("MFCDlg"));
if(pWnd==NULL)
{
AfxMessageBox(_T("接收程序没有运行!"));
return ;
}
//发送消息
static int n = 0;
pWnd->SendMessage(WM_CONTROL,NULL, n);
n++;
CView::OnMButtonUp(nFlags, point);
}
![](https://i-blog.csdnimg.cn/blog_migrate/c3c77a53c79a1ee1c83147bb25897fc4.png)
程序命名为:MFCDlg 用于在发送端的查询
(发送端中有:CWnd *pWnd=CWnd::FindWindow(NULL,_T("MFCDlg")); 进行查询)
CMFCDlgDlg.h 中,同样需定义与发送端一样的消息名:
#define WM_CONTROL WM_USER+1001
以及一个针对此消息的处理函数:
afx_msg LRESULT OnControlPrint(WPARAM wParam,LPARAM lParam);
然后将消息与处理函数进行关联起来:
ON_MESSAGE(WM_CONTROL, OnControlPrint)
处理函数就是实现传递过来的数据显示即可:
将静态文本定义一个变量 ,然后赋值,刷新
LRESULT CMFCDlgDlg::OnControlPrint(WPARAM wParam,LPARAM lParam)
{
int n = (int)lParam;
m_nRecv = lParam;
UpdateData(FALSE);
return 1;
}
http://download.csdn.net/detail/yulinxx/9197223
代码。。。 内含OpenGL,可以删除