在VC++ 6.0下利用消息实现内部进程通讯

内部进程间通讯和数据交换有多种方式:消息、共享内存、匿名(命名)管道 、邮槽、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()其必须等待该消息处理完后方可返回。

时间: 2024-09-12 23:30:15

在VC++ 6.0下利用消息实现内部进程通讯的相关文章

DES算法及其在VC++6.0下的实现(下)

在<DES算法及其在VC++6.0下的实现(上)>中主要介绍了DES算法的基本原理,下面让我们继续: 二.子密钥的生成 64比特的密钥生成16个48比特的子密钥.其生成过程见图: 子密钥生成过程具体解释如下: 64比特的密钥K,经过PC-1后,生成56比特的串.其下标如表所示: PC-1 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 6

在VC++6.0下可以运行,但是移植到VS2003之后就不行了

问题描述 用DBLibrary和数据库连接有一个例子physic在VC++6.0下可以运行,但是移植到VS2003之后就不行了,不知道为什么,应该怎么设置?程序地址见file:///E:/HLA/SQL/VC++中使用%20DB-Library%20编程(SQL%20Server)%20一/VC++中使用%20DB-Library%20编程(SQL%20Server)%20-%20VC知识库文章.htm 解决方案 解决方案二:属性里面设置静态链接

在VC 6.0下如何调用Delphi开发的进程内COM

源代码包中共有两个zip文件,其中DelphiCallVCCOM.zip为Delphi调用VC的COM组件,VCCallDelphiCOM.zip为VC调用Delphi的COM组件 因为本人的语言水平很差,考大学时150的总分,我考了个60分.外语也是,初中及格过一次,会考及格过一次.其它的时间好像从没有及格过.所以我不写文章,因我一百字的文章给我写,至少要出八九个错别字.哈哈-.真是个马大哈.你别说我还真的姓马.所以下面的文章中有错误之处,请你老人家多多理解.谁叫你看我的文章了的.下面就谈正事

DES算法及其在VC++6.0下的实现(上)

摘要: 本文介绍了一种国际上通用的加密算法-DES算法的原理,并给出了在VC++6.0语言环境下实现的源代码.最后给出一个示例,以供参考. 关键字:DES算法.明文.密文.密钥.VC: 本文程序运行效果图如下: 正文: 当今社会是信息化的社会.为了适应社会对计算机数据安全保密越来越高的要求,美国国家标准局(NBS)于1997年公布了一个由IBM公司研制的一种加密算法,并且确定为非机要部门使用的数据加密标准,简称DES(Data Encrypton Standard).自公布之日起,DES算法作为

VC++ 6.0下GIS打印输出控制的实现

VC++6.0中用应用向导生成新程序时,可以在应用向导Step4对话框中选择Printing and Print preview选择包括了基本打印和打印预览支持.但这些打印功能在MM_TEXT模式下打印出的文件尺寸大小发生了变化,比屏幕上显示的小得多. 我们在VC++中实现绘图时最方便.最常用的绘图模式为MM_TEXT.如何对打印输出进行有效的控制?尤其是在GIS中,是我们经常所面临的问题.笔者通过实践,提出了自己的做法,再此与广大读者共同探讨. 首先明确的是在MM_TEXT模式下很难实现象素坐

在VC++6.0中利用串行通信控件

目前,在用计算机进行数据传输时,常用的是串行通信方式.在Visual C++的编程中,既可以用Windows API函数进行串行通信编程,也可以利用环境自带的控件进行编程.利用 API函数编写实际应用程序时,往往要考虑多线程的问题,这样编出来的程序不但十分庞大,而且结构比较复杂,继承性差,维护困难.但是使用串行通信控件就相对简单一些,而且功能强大,性能安全可靠. 本文以Microsoft Communications Control(version 6.0)为例,介绍串行通信控件在VC++中的使

在流模式下利用消息头传输带外信息

WCF为传输层实现数据流在客户和服务之间进行传输提供了很好的支持,不过 在使用这种方式时,我们必须遵循相应的约定.WCF服务在启动时会首先检查操 作契约是否符合这种规范.因为通常模式下我们不能简单地在客户中使用特定的 流,如我们在传输文件时,我们目的是要得到文件对象,而不是流对象.因为我 们使用了不同类型的文件(如:*.doc,*.exe等),那么在另一端我们应该能够 重现这种类型,不过由于使用流传输带来很好的性能,于是我们想在文件传输中 使用这种流模式.那么就得附加相应的文件信息给异端,以便重

ASP.NET 2.0下利用javascript实现TreeView中的checkbox全选

实现了对Treeview控件中选择框CheckBox的全选处理.实现的是菜单选择框父项打勾后它下面的子项选择框全部为打勾.如果其中一项子 项取消打勾父项父项选择框为空.主要效果见下图: 主要的实现原理是在TreeView控件的onclick事件中用JS实现全选操作. <script language="javascript" type="text/javascript"> function OnTreeNodeChecked() { var ele =

《C语言课程设计》一1.1 VC 6.0简介

1.1 VC 6.0简介 Visual C++ 6.0是Microsoft公司推出的开发Win32程序的集成开发环境,可将"高级语言"翻译为"机器语言(低级语言)",并支持面向对象可视化编程.它具有程序框架自动生成.灵活方便的类管理.代码编写和界面设计集成交互操作.可开发多种程序等优点,而且通过简单的设置即可使其生成的程序框架支持数据库接口.OLE和WinSock网络. Visual C++ 6.0, 简称VC 6.0或VC 6,是微软公司于1998年推出的Visu