有些程序与用户的交互性很弱,它只在适当的时候给用户提供输入的机会,这样的程序本身是老大,它在觉得需要用户参与的时
候才想到让用户输入。有些程序与用户的交互性很强,它时刻允许用户输入,这样的程序用户是老大--今时今日这样的服务态度
是比较常见的,windows应用程序就是这样的程序。
因为要时刻允许用户操作,所以操作系统会监控所有的输入设备(键盘鼠标定时器之类的)。当一个操作发生(事件发生)时,
操作系统产生相应的消息(消息是一个信息结构体,它描述了操作),并把消息放到系统的消息数组(消息队列)里面存放起来
,接着系统会把这个消息拷贝一个放到应用程序的消息数组(消息队列)里面。应用程序本身的运行机制决定了它会从消息数组
里面取出这个消息,并把这个消息交由它的消息处理函数来进行处理。细节会加重思考的负担,虽然细节也会决定成败---我们可
以把操作系统这些运行机制看作一个黑盒子,我们只要坚信,当用户操作了一下时(如键盘输入,或应用程序主动发出消息“仿
报”操作发生了,等等),系统就会执行相应的应用程序的消息处理函数。那么,我们要做的就是,填写消息处理函数,等着系
统来执行。
用户产生操作,这是因。操作系统执行相应的处理函数,这是果。windows应该程序就是一个因果报应的过程,我们更多的工作是
在填写结果。我们可以忽略内部的工作原理(就像开车一样不必知道它的内部运作),但应该知道因果报应的过程中存在着很多
环节,而且这些环节之所以能够组织起来得力于windows操作系统“消息驱动”这一内部机制。
把一系列简单的环节组织成一个复杂完美的过程是一门技术和艺术。由一个复杂的过程逆推分解出一系列简单的环节更是一门技
术和艺术。很多时候都是先定靶再打枪,所以是先知道想要的结果再去组织一系列的环节。