工控编程吧
标题:
333上位机VC MFC实现进程间的通讯
[打印本页]
作者:
qq263946146
时间:
2016-9-21 21:10
标题:
333上位机VC MFC实现进程间的通讯
(, 下载次数: 0)
上传
点击文件名下载附件
实现进程间的通讯
功能展示
进程就是独立可单独运行的程序,不同的程序之间时常得进行通讯完全特定功能,我们当前例程实现两程序间的通讯功能,效果如图,点击不同的按钮会向系统发送我们自己注册的消息,如果受控的程序也注册了相同的消息,就可以接收到我们发送的消息,从而执行想要的功能;
要点提示
我们操作系统的窗口消息机制允许程序间通过函数PostMessage()或SendMessage()等发送消息的函数进行通讯 ,具体发送的消息可以通过WM_USER+数字定义或通过RegisterWindowMessage()函数注册,当前例程通过后者定义,全消息唯一化。这个函数用于在操作系统中注册一唯一的消息,如果多个程序注册了相同名字的消息,那么程序就会得到相同的消息标识。
UINT RegisterWindowMessage( LPCTSTR lpString);
lpString被注册消息的名字
返回值为Long类型变量,& C000 到 & FFFF之间的一个消息编号。零意味着出错(注册消息失败)
实现功能
1.新建基于对话框的应用程序,用于控制外部程序。
2.添加四按钮<最大化外部窗口><最小化外部窗口><还原外部窗口><关闭外部窗口>,关联点击函数用于向系统发送自定义的消息
void CGkbc8Dlg::OnMax()
{
UINT maxMsg = RegisterWindowMessage("最大化");
:
ostMessage(HWND_BROADCAST,maxMsg,0,0);
}
void CGkbc8Dlg::OnMin()
{
UINT minMsg = RegisterWindowMessage("最小化");
:
ostMessage(HWND_BROADCAST,minMsg,0,0);
}
void CGkbc8Dlg::OnBrestore()
{
UINT revMsg = RegisterWindowMessage("还原");
:
ostMessage(HWND_BROADCAST,revMsg,0,0);
}
void CGkbc8Dlg::OnClose()
{
UINT closeMsg = RegisterWindowMessage("关闭");
:
ostMessage(HWND_BROADCAST,closeMsg,0,0);
}
3.再新建一基于对话框的应用程序,用于响应消息;
4.定义四个消息成员变量private: UINT m_nMinMsg,m_nMaxMsg,m_nResMsg,m_nCloseMsg;并在程序初始化时注册系统消息,给此四变量赋值;
m_nMinMsg = RegisterWindowMessage("最小化");
m_nMaxMsg = RegisterWindowMessage("最大化");
m_nResMsg = RegisterWindowMessage("还原");
m_nCloseMsg = RegisterWindowMessage("关闭");
5.给主对话框类添加虚函数PreTranslateMessage()在内部实现四个消息的处理
BOOL CSlaverDlg:
reTranslateMessage(MSG* pMsg)
{
if(pMsg->message == m_nMinMsg)
{
PostMessage(WM_SYSCOMMAND,SC_MINIMIZE,0);
}
else if(pMsg->message == m_nMaxMsg)
{
PostMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0);
}
else if(pMsg->message == m_nResMsg)
{
PostMessage(WM_SYSCOMMAND,SC_RESTORE,0);
}
else if(pMsg->message == m_nCloseMsg)
{
PostMessage(WM_SYSCOMMAND,SC_CLOSE,0);
}
return CDialog:
reTranslateMessage(pMsg);
}
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/cebd35b75b7296bb60c168086ef017ca/0/0/w_19rsthuh2t.swf-albumId=6348083609-tvId=6348083609-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件 [weixinlianxi]1[/weixinlianxi]
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4