版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 Windows编程与MFC基础 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制。本章首先将剖析Windows程序的内部运行机制,为读者扫清VC+学习路途中的第一个障碍,而后简单介绍一下MFC的基础知识,为进一步学习MFC程序开发打下基础。3.1 Windows编程基础 Windows操作系统采用了图形用户界面,借助于它提供的API(Application Programming Interface)函数,用户可以编出具有漂亮图形界面的程序。本节将主要介绍一下涉及Windows编程中用到的一些概念。3.1.1 Windows API函数 为方
2、便用户开发Windows应用程序,Windows操作系统提供了各种各样的函数。这些函数是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称为API函数。用户在编写Windows程序时所说的API函数,就是指系统提供的函数,所有主要的Windows函数都在“Windows.h”头文件中进行了声明。3.1.2 窗口与句柄 窗口是Windows应用程序中一个非常重要的元素,它是Windows应用程序与用户进行交互的接口。一个Windows应用程序至少要有一个窗口,称为主窗口。通过窗口,可以接收用户的输入,并显示输出。3.1.3
3、事件与消息 Windows程序采用的是事件驱动方式的程序设计模式,其操作主要是基于消息的。在应用程序启动后,系统等待用户在图形用户界面内的输入选择,如鼠标按键、键盘按键、窗口被创建、关闭、改变大小、移动等,对系统而言,这些都是事件。 只要有事件发生,系统即产生特定的消息。消息描述了事件的类别,包含了相关信息,Windows应用程序利用消息与系统及其它应用程序进行信息交换。3.1.4 常用的Windows数据类型 Windows应用程序中常用的数据类型如表(具体内容请参照本书)3.2 Windows应用程序分析 WinMain和WinProc函数构成了Windows应用程序的主体。WinMain
4、函数负责建立窗口和建立消息循环,WndProc函数负责消息的处理。典型的Windows窗口的创建与处理过程可表示为(具体内容请参照本书)3.2.1 WinMain函数 传统的DOS程序以main函数作为进入程序的初始入口点,在Windows应用程序中,main函数被WinMain函数取代。当Windows操作系统启动一个程序时,它调用的就是该程序的WinMain函数。WinMain函数是Windows程序的入口点函数,当WinMain函数结束或返回时,Windows应用程序结束。3.2.2 创建窗口 创建一个完整的窗口,需要经过下面4个操作步骤:定义窗口类、注册窗口类、创建窗口实例、显示及更新
5、窗口。3.2.3 消息循环 在创建窗口、显示窗口、更新窗口后,就需要编写一个消息循环,不断地从消息队列中取出消息,并进行响应。要从消息队列中取出消息,需要调用GetMessage()函数,其原型如下:(具体内容请参照本书)3.2.4 WinProc窗口函数 在完成上述步骤后,剩下的工作就是编写一个窗口函数,用于处理发送给窗口的消息。WinProc函数由一个或多个switch语句组成。每一条case语句对应一种消息,当应用程序接收到一个消息时,相应的case语句被激活。3.2.5 Windows编程实例 本节将通过一个实例讲解Windows窗口的创建。该Windows应用程序将创建并显示一个窗口
6、,在客户区中输出文本。 在Visual C+6.0中,可以使用AppWizard创建一个空的“Win32Application”工程,在其中创建源文件,利用Windows API函数实现基本的Windows窗口程序编程。3.3 MFC基础 前面已经多次提到,使用Viusal C+6.0进行应用程序的开发,其最大的便利就是可以使用其提供的MFC类库,通过MFC AppWizard自动生成的MFC应用程序框架,方便地开发自己想要实现的功能。本节将介绍有关MFC的基础知识。3.3.1 MFC概述 Visual C+的微软基础类库(Microsoft Foundation Class Library,
7、MFC)封装了大部分API函数,并提供了一个应用程序框架,简化了和标准了Windows程序设计,所以用MFC编写Windows应用程序也称为标准Windows程序设计。3.3.2 MFC基础类及其层次结构 MFC类库采用单一继承结构,从根类CObject层层派生出绝大多数MFC中的类,(具体内容请参照本书)3.3.3 MFC中的全局函数 MFC库中还包含有一些全局函数,这些函数不输入任何一个类,即可以直接使用。这些全局函数一般都以“Afx”为前缀,(具体内容请参照本书)3.4 MFC应用程序框架分析 通过3.2节介绍,相信读者对Windows应用程序的创建及其运行机制已经有了一定的了解,本节将
8、对MFC应用程序框架作一下简单剖析,使读者了解MFC应用程序框架是如何组织与工作的。3.4.1 入口函数前面已经介绍过,WinMain函数是Windows程序的入口点函数。然而打开2.2.2节利用AppWizard创建的MFC应用程序“SDIDemo”,却找不到WinMain函数。这时因为MFC考虑到典型的Windows程序需要的大部分初始化工作都是标准化的,因此把WinMain函数隐藏在应用程序的框架中,编译时会自动将该函数链接到可执行文件中。在Visual C+6.0安装目录下的“Microsoft Visual StudioVC98MFCSRC”路径中,会发现有一个源文件“WinMain
9、.cpp”,其中定义了入口函数AfxWinMain, 3.4.2 应用程序对象 每个应用程序必须从CWinApp派生出自己的应用程序类,并定义一个全局的对象。该应用程序类包含了Windows下应用程序的初始化、运行和结束过程。基于框架建立的应用程序必须有一个(且只能有一个)从CWinApp派生的类的对象。 在工程“SDIDemo”的CSDIDemoApp类的源文件中,可发现框架自动生成了应用程序对象,3.4.3 InitInstance函数 CWinApp类中的InitInstance函数用于初始化实例。每次启动应用程序的一个实例时,WinMain函数都要调用InitInstance函数。 在
10、工程“SDIDemo”的CSDIDemoApp类中,自动对InitInstance函数进行了重载,(具体内容请参照本书)3.4.4 Run函数 WinMain在初始化应用程序实例后,就调用CWinThread类的Run函数来处理消息循环。在Visual C+6.0安装目录下的“Microsoft Visual StudioVC98MFCSRC”路径中的源文件“THRDCORE.CPP”中会找到Run函数的实现代码,(具体内容请参照本书)3.4.5 MFC的消息映射 Windows程序中的消息处理是在WinProc函数中,通过Switch结构实现的。但当处理的消息比较多时,Switch-Case结构将变得
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年肺癌化疗药物模拟试题(含答案)
- 2026年软件安全性能模拟题及答案详解
- 2026年历年CT医师大型设备上岗证考试模拟题及答案详解
- 山西省朔州市部分学校2027届九年级上学期10月期中考试语文试卷(含答案)
- 吉林省白城市2026-2027学年度上学期八年级道德与法治期中测试卷 (含答案)
- 河北省保定市曲阳县部分学校2026-2027年高二上学期10月质量检测地理试卷(含答案)
- 2026年江苏省宿迁市九年级下学期第二次学业水平检测化学试卷含解析
- 2026年浙江省杭州市第二中学七年级英语上册第7单元课后练习题及答案
- 2026年公共营养师考试儿童青少年营养学专项模拟试卷及答案
- 统编版高一历史上册第4章古代中国的政治制度同步练习题及答案
- 2026国企招聘考试(文秘)历年参考题库含答案详解
- 2026数学新教材 数学广角:搭配问题 课件 人教版(新教材)三年级数学上册
- 山东名校考试联盟2026-2027学年高三上学期10月阶段性检测 化学原卷
- 房建工程施工测量流程与规范标准
- 2026理赔专业技术职务任职资格考试(理赔员·社保理赔)历年参考题库含答案详解
- 市场营销:理论与中国实践(第4版数字教材版)课件 第11章 营销传播
- 食堂后厨岗位流程标准化SOP
- 2026年秋统编版(新教材)九年级道德与法治上册(全册)每课核心知识点清单梳理
- 《输电线路岩石地基基础施工方案》
- 2021-2022学年天津市河东区高二上学期期中质量检测语文试题(解析版)
- 阅读护理文献分享
评论
0/150
提交评论