进程间的通信

. Windows消息机制

Windows是一种面向对象的体系结构,Windows环境和应用程序都是通过消息来交互的。Windows应用程序开始执行后,Windows为该程序创建一个"消息队列(message queue)",用以存放邮寄给该程序可能创建的各种不同窗口的消息。消息队列中消息的结构(MSG)为:
typedef struct tagMSG{
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
}MSG;
      
其中第一个成员变量是用以标识接收消息的窗口的窗口句柄;第二个参数便是消息标识号,如WM_PAINT;第三个和第四个参数的具体意义同message值有关,均为消息参数。前四个参数是非常重要和经常用到的,至于后两个参数则分别表示邮寄消息的时间和光标位置(屏幕坐标)。把消息传送到应用程序有两种方法:一种是由系统将消息"邮寄(post)"到应用程序的"消息队列"这是"进队消息"Win32 API有对应的函数:


PostMessage()
,此函数不等待该消息处理完就返回;而另一种则是由系统在直接调用窗口函数时将消息"发送(send)"给应用程序的窗口函数,属于"不进队消息"对应的函数是SendMessage()其必须等待该消息处理完后方可返回。


二、 主控程序的实现


(一) 新建一工程文件:Sender,选取MFC AppWizard(exe)
(二) 第二步选取Single document(单文档)

(三) 其余几步均为确省值。

(四) 添加三个菜单"命令一""命令二""命令三"及与之对应的函数:

OnSendComm1
()

{
  CString str="Receiver";
  CWnd *pWnd=CWnd::FindWindow(NULL,str);
  if(pWnd)
  pWnd->SendMessage(WM_COMM,0,0);
}
OnSendComm2
()

{
  CString str="Receiver";
  CWnd *pWnd=CWnd::FindWindow(NULL,str);
  if(pWnd)
  pWnd->SendMessage(WM_COMM,0,1);
}
OnSendComm3
()

{
  CString str="Receiver";
  CWnd *pWnd=CWnd::FindWindow(NULL,str);
  if(pWnd)
  pWnd->SendMessage(WM_COMM,1,0);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值