侯捷+深入浅出MFC---第1.pdf

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
侯捷深入浅出MFC---第1

Powered By Gisun   第1章 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) 所有Wi

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档