- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Win32 基本程序观念
Win32 基本程序观念
Win32 基本程序观念
程序设计领域里,每一个人都想飞。
但是,还没学会走之前,连跑都别想!
虽然这是一本深入讲解MFC 程序设计的书,我仍坚持要安排这第一章,介绍 Win32 的 基本程序设计原理(也就是所谓的SDK 程序设计原理)。从来不曾学习过在「事件驱动(event driven)系统」中撰写「以消息为基础(message based)之应用程序」者,能否一步跨入MFC 领域,直接以application framework 开发 Windows 程序,我一直抱持怀疑的态度。虽然有了MFC(或任何其它的application framework),你可以继承一整组类,从而快速得到一个颇具规模的程序,但是 Windows 程序的运作 本质(Message Based,Event Driven)从来不曾也不会改变。如果你不能了解其髓,空有 其皮其肉或其骨,是不可能有所精进的,即使能够操控 wizard,充其量却也只是个 puppet,对于手上的程序代码,没有自主权。
我认为学习MFC之前,必要的基础是,对于Windows程序的事件驱动特性的了解(包括消息的产生、获得、分派、判断、处理),以及对 C++ 多态(polymorphism)的精确体会。本章所提出的,是我对第一项必要基础的探讨,你可以从中获得关于 Windows 程序的诞生与死亡,以及多任务环境下程序之间共存的观念。至于第二项基础,将由第二章为你夯实。
图1-1 一个32位Windows SDK程序的开发流程
需要什么函数库(.LIB)
众所周知Windows 支持动态链接。换句话说,应用程序所调用的Windows API 函数是在「运行时」才链接上的。那么,「链接时期」所需的函数库做什么用?有哪些?
并不是延伸文件名为 .dll 者才是动态链接函数库(DLL,Dynamic Link Library),事实上 .exe、.dll、.fon、.mod、.drv、.ocx 都是所谓的动态链接函数库。
Windows 程序调用的函数可分为 C Runtimes 以及 Windows API 两大部分。早期的 C Runtimes 并不支持动态链接,但Visual C++ 4.0 之后已支持,并且在32 位操作系统中已不再有small/medium/large 等内存模式之分。以下是它们的命名规则与使用时机 :
LIBC.LIB - 这是C Runtime 函数库的静态链接版本。
MSVCRT.LIB - 这是C Runtime 函数库动态链接版本(MSVCRT40.DLL)的 import 函数库。如果链接此一函数库,你的程序执行时必须有 MSVCRT40.DLL 在场。
另一组函数,Windows API,由操作系统本身(主要是 Windows 三大模块 GDI32.DLL 和 USER32.DLL 和 KERNEL32.DLL)提供(注)。虽说动态链接是在运行时才发生「链接」事实,但在链接时期,链接器仍需先为调用者(应用程序本身)准备一些适当的资讯,才能够在运行时顺利「跳」到 DLL 执行。如果该 API 所属之函数库尚未加载,系统也才因此知道要先行加载该函数库。这些适当的信息放在所谓的「import 函数库」中。32 位 Windows 的三大模块所对应的 import 函数库分别为 GDI32.LIB 和 USER32.LIB 和 KERNEL32.LIB。
Windows 发展至今,逐渐加上的一些新的 API 函数(例如 Common Dialog、ToolHelp) 并不放在GDI和USER 和KERNEL三大模块中,而是放在诸如COMMDLG.DLL、 TOOLHELP.DLL之中。如果要使用这些APIs,链接时还得加上这些DLLs 所对应的import函数库,诸如COMDLG32.LIB 和 TH32.LIB。
很快地,在稍后的范例程序“Generic” 的makefile中,你就可以清楚看到链接时期所需的各式各样函数库(以及各种链接器选项)。
需要什么头文件(.H)
所有Windows程序都必须含入WINDOWS.H。早期这是一个巨大的头文件,大约有5000 行左右,Visual C++ 4.0 已把它切割为各个较小的文件,但还以 WINDOWS.H 总括之。 除非你十分清楚什么 API 动作需要什么头文件,否则为求便利,单单一个 WINDOWS.H 也就是了。
不过,WINDOWS.H 只照顾三大模块所提供的API 函数,如果你用到其它 system DLLs,例如 COMMDLG.DLL 或 MAPI.DLL 或 TAPI.DLL 等等,就得含入对
您可能关注的文档
最近下载
- 具身智能机器人操作系统与应用技术.pdf VIP
- 具身机器人行业市场前景及投资研究报告:具身智能大脑,人形机器人发展.pdf VIP
- 半导体外延工艺技术发展趋势.pptx VIP
- 离散制造数字化智能工厂解决方案.pdf VIP
- 2025年度华医网继续教育答案-常见心血管疾病的中西医结合诊疗策略.docx VIP
- GB∕T 1355-2021 小麦粉 GB∕T 1355-2021 小麦粉.pdf
- 欧洲人的标准 EN10088-1-2005-Eng.pdf VIP
- Panasonic XQG70-E70XS E70GS E70GWwashing machine Manual说明书用户手册.pdf
- 函数的定义与函数的性质.pptx VIP
- 人工智能行业市场前景及投资研究报告:养老机器人,AI养老.pdf VIP
文档评论(0)