1.1 Windows 程序运行原理(消息循环和响应)(3)

发布时间:2021-06-07

随消息的不同而异。读者可用goto definition功能查看WPARAM,LPARAM的定义,发现它们分别为unsigned int和long,并不是什么神秘莫测的变量类型。VC++中之所以要这样做,是希望从变量定义的类型上,就能区分出变量的用途。对于同一种变量类型,可 按其用途细分定义成多种其他的形式。这种概念在VC++中被广泛使用,也是导致初学者困惑的一个因素。

最后两个变量分别代表发出消息 的时间和鼠标的当前位置,这里没有什么需要特殊解释的。

明白了消息,我们再来看看消息队列。如上面的图例所示,每个Windows程 序都有一个消息队列。队列是一个先进先出的缓冲区,通常是一个某种变量类型的数组。消息队列里的每一个元素即一条消息,操作系统将生成的每个消息按先后顺 序放进消息队列,第一条消息放入第一格,第二条消息放入第二格,依次类推...。应用程序总是取走队列里的第一条消息,消息取走后,第二条消息成为第一 条,剩余的消息依次前移。应用程序取得消息后,便能够知道用户的操作和程序状态的变化。例如,应用程序从队列里取到了一条WM_CHAR消息,那一定是用 户输入了一个字符,并且能够知道输入的是哪个字符。应用程序得到消息后,就要对消息进行处理,这即我们通常说的消息响应,消息响应是我们通过编码实现的, 这也是Windows程序的主要代码区。在消息响应代码中,我们很可能又要调用操作系统提供的API函数,以便完成特定的功能。如果我们收到窗口的 WM_CLOSE消息,我们可以调用DestroyWindow这个API函数来关闭该窗口,或是用MessageBox这个API函数来提示用户是否真 的要关闭窗口。

通过上面的分析,我们可以想象到,要用VC++编写Windows程序,除了要具备良好的C语言功底外,还要求掌握掌 握两点知识:1.不同的消息所代表的用户操作和程序状态,2.要让操作系统执行某个功能所对应的API函数。

1.1 Windows 程序运行原理(消息循环和响应)(3).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219