【study-note】Windows环境下32位汇编语言程序设计--第4章 第一个窗口程序4.1 开始了解窗口(2)
第4章 第一个窗口程序4.1 开始了解窗口(2)
先通过一个简单的例子来说明两种程序设计方式的不同,以DOS下的文件比较命令comp为例,程序运行时先提示输入第一个文件名,然后是输入第二个文件名,程序比较后退出,同时把结果输出在屏幕上。假如有一个窗口版的comp程序,那么运行时会在屏幕上出现一个对话框,上面有两个文本框用来输入两个文件名,还会有个“比较”按钮,按下后开始比较文件,用户可以随时按下“关闭”按钮来退出程序。(dos程序是典型的过程程序,做什么事情都按过程来执行。)
两种程序的运行会有相当大的不同,如图4.2所示,DOS程序必须按照顺序运行,当运行到输入第二个文件名时,用户不可能回到第一步修改第一个文件名,这时候用户也不能退出(除非用户强制用Ctrl+C键,但这不是程序的本意);而在窗口程序中用户可以随意选择先输入哪个文件名,同时也可以对窗口进行各种操作,当用户做任何一个操作的时候,相当于发出了一个消息,这些消息没有任何顺序关系,程序中必须随时准备处理不同的消息。(消息处理机制下的程序具有的灵活性远远要比按照顺序运行的程序要有优越性。)

图4.2 不同的程序结构模式
这就决定了窗口程序必定在结构上和DOS程序有很大的不同,窗口程序实现大部分功能的代码应该呆在同一个模块图中的“消息处理”模块中,这个模块可以随时应付所有类型的消息,只有这样才能随时响应用户的各种操作。(如果所有的代码都集中在一个模块里,那么代码是否会失去平衡呢?即导致某些地方代码很庞大。)
下面先来看一个地地道道的Win32汇编窗口程序。(这是最激动人心的时刻!)
2. FirstWindow源代码
读者可以在所带光盘的Chapter04\FirstWindow目录中找到源代码,目录里面有两个文件,它们是汇编源文件FirstWindow.asm和nmake工具使用的makefile,汇编源程序如下:(大多数好的教程里都会写着,虽然可以从光盘里轻松的将代码复制到电脑上,但最好应该自己将它们打进去,而不是使用现成的。这样对初学者来说可以加深对程序的印象。据说微软前掌门人BILL在他很少写代码时,却还是会一句一句的将其它的工程师写的程序的代码打在电脑上。用意何在可显而易见。以下是我自己打的代码,我还添加了非常详细的注释进去,当然这并不是一个好习惯,但是可以大大加深对程序的理解,虽然有可能是不正确的,但至少有了自己的理解。比起对程序什么都不了解的要好点。btw:在我一句一句代码打出来时,居然少打了处理消息的缺省函数进去,害我得花了好长时间来检查程序错在哪里,=-=||,有了这个教训,以后应该不会再犯这个错误了。)
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
