在VC++ 6.0下利用消息实现内部进程通讯
2010-08-15 20:47:36 来源:WEB开发网内部进程间通讯和数据交换有多种方式:消息、共享内存、匿名(命名)管道 、邮槽、Windows套接字等多种技术。其中利用消息机制实现IPC虽然同其他方法 相比有交换的数据量小、携带的信息少等缺点,但由于其实现方便、应用灵活而 广泛应用于无须大量、频繁数据交换的内部进程通讯系统之中,尤其是对于在上 层主控软件与底层工作软件之间的命令与响应上更能充分显示其良好的性能。本文就通过编制一个主控软件和一个受其操作的底层工作软件来阐述如何用VC++6.0 通过消息来实现内部进程通信。
一、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()其必须等待该消息处理完后方可返回。
更多精彩
赞助商链接