消息概念在学VC编程的过程中是必定会碰到的,而且是一个很重要的概念。在DOS程序中,我们使用的程序设计方法主要是顺序的,用过TC2/TC3/BC等编程的人对这个会很清楚,我们先定义变量,然后就开始写进行的过程,最后到结束,一切都是井然有序,最多中间来几个条件分支。但是WINDOWS的程序是基于GUI(图形用户界面)的,上面不但有按钮(BUTTON),还有编辑框(EDITBOX),当然还有其它的控件,我们在编程的时候,根本想不到用户会先点哪个,所以WINDOWS的事件驱动的驱动方式就显得很重要了,也就是说WINDOWS的程序不由事件的顺序来控制,而是由事件的发生来控制的,所有的事件都是无序的。
消息的概念可以这样说“在WINDOWS环境中,消息是指从WINDOWS调用的函数传递给应用程序出口函数的固定不变的数据集。”(见书《Microsoft Windows 3 Developer's Workshop》,Microsoft press,Richard Wilton)。学过SDK编程的人,看到这些话会很清楚的就知道了消息的概念。
如果这个概念看不懂的话,我们可以从另外一个角度来说,先说一点有关与消息的知识,这个很重要,WINDOWS系统中有一个消息系统,有且只有一个,还有很多个消息队列,消息系统能接受到所有的消息,并且它还能够把这个消息发给任何应用程序,应用程序一旦接收到消息(当然应用程序之间也能互相发送消息),如果要对这个消息处理的话,就要对这个消息进行处理,不同的消息会有不同的处理,比如,WM_PAINT消息会通知应用程序要在显示器上输出东西。有些消息,你需要添加另外的程序代码来处理,有些消息,你在VC编程的时候,所产生的程序框架就已经能对它进行处理了,你没必要去写了。
比如,我们用VC建立了一个基本对话框的应用程序,上面有2个按钮,分别是BUTTONA和BUTTONB,点击BUTTONA后,BUTTONB就会隐藏掉。在编程的过程中,你就会对BUTTONA的BN_CLICKED事件进行编程,让BUTTONB隐藏掉,隐藏后上面就没有BUTTONB了,这儿会有一个WM_PAINT消息通知应用程序要重画应用程序的界面,以显示应用程序上面已经没有BUTTIONB按钮了,那个BN_CLICKED事件中就需要我们要添加另外的程序代码,这就是说,如果我们点击了BUTTONA按钮,消息系统就会接收到BN_CLICKED的消息,并且把它发送给我们建立的程序框架,然后执行我们添加的代码,而那个WM_PAINT事件就不用了,程序的框架会自动进行处理的,我们就不必去多费心了。
相信现在你应该对消息的概念有所了解了,如果还不了解的话,你可以到互联网上查找一些更好的文章,那对你会更有帮助的。