tceic.com
学霸学习网 这下你爽了
赞助商链接
当前位置:首页 >> 四年级英语 >>

Windows编程与MFC基础


第3章 Windows编程与MFC基础
要想熟练掌握Windows应用程序的开发,首先需要 理解Windows平台下程序运行的内部机制.本章首 先将剖析Windows程序的内部运行机制,为读者扫 清VC++学习路途中的第一个障碍,而后简单介绍 一下MFC的基础知识,为进一步学习MFC程序开发 打下基础.

3.1 Windows编程基础
Windows操作系统采用了图形用户界面,借助于它 提供的API(Application Programming Interface)函数,用户可以编出具有漂亮图形界 面的程序.本节将主要介绍一下涉及Windows编程 中用到的一些概念.

3.1.1 Windows API函数
为方便用户开发Windows应用程序,Windows操作 系统提供了各种各样的函数.这些函数是Windows 操作系统提供给应用程序编程的接口 (Application Programming Interface),简称 为API函数.用户在编写Windows程序时所说的API 函数,就是指系统提供的函数,所有主要的 Windows函数都在"Windows.h"头文件中进行了 声明.

3.1.2 窗口与句柄
窗口是Windows应用程序中一个非常重要的元素, 它是Windows应用程序与用户进行交互的接口.一 个Windows应用程序至少要有一个窗口,称为主窗 口.通过窗口,可以接收用户的输入,并显示输 出.

3.1.3 事件与消息
Windows程序采用的是事件驱动方式的程序设计模 式,其操作主要是基于消息的.在应用程序启动 后,系统等待用户在图形用户界面内的输入选择, 如鼠标按键,键盘按键,窗口被创建,关闭,改 变大小,移动等,对系统而言,这些都是事件. 只要有事件发生,系统即产生特定的消息.消息 描述了事件的类别,包含了相关信息,Windows应 用程序利用消息与系统及其它应用程序进行信息 交换.

3.1.4 常用的Windows数据类型
Windows应用程序中常用的数据类型如表(具体内 容请参照本书)

3.2 Windows应用程序分析
WinMain和WinProc函数构成了Windows应用程序的 主体.WinMain函数负责建立窗口和建立消息循环, WndProc函数负责消息的处理.典型的Windows窗 口的创建与处理过程可表示为(具体内容请参照 本书)

3.2.1 WinMain函数
传统的DOS程序以main函数作为进入程序的初始入 口点,在Windows应用程序中,main函数被 WinMain函数取代.当Windows操作系统启动一个 程序时,它调用的就是该程序的WinMain函数. WinMain函数是Windows程序的入口点函数,当 WinMain函数结束或返回时,Windows应用程序结 束.

3.2.2 创建窗口
创建一个完整的窗口,需要经过下面4个操作步骤: 定义窗口类,注册窗口类,创建窗口实例,显示 及更新窗口.

3.2.3 消息循环
在创建窗口,显示窗口,更新窗口后,就需要编 写一个消息循环,不断地从消息队列中取出消息, 并进行响应.要从消息队列中取出消息,需要调 用GetMessage()函数,其原型如下:(具体内容 请参照本书)

3.2.4 WinProc窗口函数
在完成上述步骤后,剩下的工作就是编写一个窗 口函数,用于处理发送给窗口的消息.WinProc函 数由一个或多个switch语句组成.每一条case语 句对应一种消息,当应用程序接收到一个消息时, 相应的case语句被激活.

3.2.5 Windows编程实例
本节将通过一个实例讲解Windows窗口的创建.该 Windows应用程序将创建并显示一个窗口,在客户 区中输出文本. 在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,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应用程序的 创建及其运行机制已经有了一定的了解,本节将 对MFC应用程序框架作一下简单剖析,使读者了解 MFC应用程序框架是如何组织与工作的.

3.4.1 入口函数
前面已经介绍过,WinMain函数是Windows程序的入口点函 数.然而打开2.2.2节利用AppWizard创建的MFC应用程序 "SDIDemo",却找不到WinMain函数. 这时因为MFC考虑到典型的Windows程序需要的大部分初始 化工作都是标准化的,因此把WinMain函数隐藏在应用程序 的框架中,编译时会自动将该函数链接到可执行文件中. 在Visual C++6.0安装目录下的"Microsoft Visual Studio\VC98\MFC\SRC"路径中,会发现有一个源文件 "WinMain.cpp",其中定义了入口函数AfxWinMain,

3.4.2 应用程序对象
每个应用程序必须从CWinApp派生出自己的应用程 序类,并定义一个全局的对象.该应用程序类包 含了Windows下应用程序的初始化,运行和结束过 程.基于框架建立的应用程序必须有一个(且只 能有一个)从CWinApp派生的类的对象. 在工程"SDIDemo"的CSDIDemoApp类的源文件中, 可发现框架自动生成了应用程序对象,

3.4.3 InitInstance函数
CWinApp类中的InitInstance函数用于初始化实例. 每次启动应用程序的一个实例时,WinMain函数都 要调用InitInstance函数. 在工程"SDIDemo"的CSDIDemoApp类中,自动对 InitInstance函数进行了重载,(具体内容请参 照本书)

3.4.4 Run函数
WinMain在初始化应用程序实例后,就调用 CWinThread类的Run函数来处理消息循环.在 Visual C++6.0安装目录下的"Microsoft Visual Studio\VC98\MFC\SRC"路径中的源文件 "THRDCORE.CPP"中会找到Run函数的实现代码, (具体内容请参照本书)

3.4.5 MFC的消息映射
Windows程序中的消息处理是在WinProc函数中, 通过Switch结构实现的.但当处理的消息比较多 时,Switch-Case结构将变得分支很多,影响程序 的可读性.而在MFC中,则采用了消息映射的结构 进行结构化消息处理. 进行MFC消息处理,程序员要做的就是为每一个要 处理的消息提供一个消息处理函数,然后系统通 过MFC提供的一套消息映射系统来调用相应的消息 处理函数.

3.4.6 MFC消息分类
MFC把消息分为3大类:窗口消息,控件通知消息 和命令消息.


推荐相关:

Windows运行原理以及MFC框架分析

Windows运行原理以及MFC框架分析_计算机软件及应用_IT/计算机_专业资料。前面重点分析...但是对于 Windows 程序基本的运行机制,是一个 VC++程序员必需要掌握的知识。 ...


mfc windows应用程序设计期末整理

什么是资源 resource,常用资源有哪些 资源是一种供 Windows 应用程序利用,可以...为了解决多线程之间的同步问题, MFC 把对线程之间进行同步的一些基本操作封装在...


实验二基于Windows的MFC WINSOCK编程_图文

实验二基于Windows的MFC WINSOCK编程_计算机软件及应用_IT/计算机_专业资料。天津...windows编程和MFC基础 1页 1下载券 02 Windows编程与MFC基础... 16页 免费...


MFC 编程基础

MFC 编程基础 - 第 1 章 基于对话框的 Windows 应用程序 1.简介 Windows 编程的两种方法,即 Windows API 编程和 MFC 编程。 2.基于对话框的应用程序...


MFC编程_基于对话框的Windows应用程序

MFC编程_基于对话框的Windows应用程序 - 第 1 章 基于对话框的 Windows 应用程序 1. 简介 Windows 编程的两种方法,即 Windows API 编程和 MFC ...


windows编程测试题(含答案)

windows编程测试题(含答案)_从业资格考试_资格考试/...下列几个 MFC 类中,不属于应用和线程支持类的是(...只能交换基本数据类型,不能交换类类型的数据 可以...


MFC编程基础-1-基于对话框的Windows应用程序

MFC编程基础-1-基于对话框的Windows应用程序 - 第 1 章 基于对话框的 Windows 应用程序 1.简介 Windows 编程的两种方法,即 Windows API 编程和 M...


MFC的课后练习——包含MFC基础代码编程,肯定对你有一定...

MFC的课后练习——包含MFC基础代码编程,肯定对你有一定的帮助 - 第一章 Windows 应用程序基础知识 1-2 什么是 Windows API 函数? 答:用来开发 Windows SD...


网络编程实验报告-实验3 基于windows的MFC windows编程

网络编程实验报告-实验3 基于windows的MFC windows编程_调查/报告_表格/模板_实用文档。实验报告学院(系)名称:计算机与通信工程学院 姓名 班级 课程名称 学号 实验...


VC++6.0入门【第三章、MFC编程概述】

VC++6.0入门【第三章、MFC编程概述】 - 第三章 MFC 应用程序概述 第 3 章 MFC 应用程序概述 精讲 Microsoft Windows 是微软公司推出的一个应用...

网站首页 | 网站地图
All rights reserved Powered by 学霸学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com