交互式绘图软件开发
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•2021/2/19
•交互式绘图软件开发
•2
前言
1. 什么是 Windows API?
从Windows应用程序,操作系统,计算机硬件之 间的相互关系开始说起…
应用程序的机能就是:通知操作系统控制计算机硬件, 执行某个具体的动作,完成特定的功能。
例如:操作系统能够控制声卡发出声音,但它并不知 道应该何时发出何种声音,需要应用程序告诉操作系统 该发出什么样的声音。
Windows API 函数在哪里?
Windows/System32/Kernel32.dll、 USER32.dll、GDI32.dll
怎样使用Windows API?
C和Windows SDK开发包( API函数是用纯C写的,都在 windows.h中有声明)
然而如今,C++取代了C,成为专业Windows程序员首 选的语言,所以MFC横空出世了…
•2021/2/19
•交互式绘图软件开发
•7
关于教材
参考书籍(Windows 编程四大法宝)
《Windows程序设计》(第五版)Charles Petzold著 北京大学出版社( Microsoft Press )
《Visual C++技术内幕》(第四版)David J. Kruglinski著 清华大学出版社( Microsoft Press ) 《深入浅出MFC》(第二版)侯俊杰著 华中科技大学出版社 《VC深入详解》孙鑫著 电子工业出版社
消息队列
操作系统
应用程序
WinMain 窗口
窗口过程 消息响应
消息响应
消息循环 发送消息
…
消息响应
未处理的消息
DefWindowProc 交还给操作系统
实
能现 特
定
功
•2021/2/19
•交互式绘图软件开发
•10
Windows 程序内部运行机制
消息、消息队列、消息循环
应用程序开始执行后,系统都会为该程序创 建一个消息队列,这个消息队列用来存放该程 序创建的窗口的消息(消息通常与窗口相关)。
消息响应与窗口过程
如用户在某个程序活动时按了一下键盘,操 作系统马上能够感知到这一事件,并且能够知 道用户按下的是哪一个键,操作系统并不决定 对这一事件如何作出反应,而是将这一事件转 交给应用程序,由应用程序决定如何对这一事 件作出反应。对事件作出反应的过程就是消息 响应,各种消息响应放在一起组成了窗口过程。
那么,应用程序是如何通知操作系统执行某个功能的呢?
•2021/2/19
•交互式绘图软件开发
•3
前言
1. 什么是 Windows API?(续)
有过编程经验的同学都应该知道,在传统应用程序中 要完成某个功能,都是以函数调用的形式实现的,同样, Windows应用程序也是以函数调用的方式来通知操作系统 执行相应的功能的。
•2021/2/19
•交互式绘图软件开发
•12
Windows 程序内部运行机制
Windows API 中消息的定义
操作系统是怎样将感知到的事件传递给应用程序的 呢?这是通过消息机制(Message)来实现的。操作系统 将每个事件都包装成一个称为消息的结构体MSG来传 递给应用程序,参看MSDN。
MSG结构定义如下:
例如,当我们按下鼠标左键的时候,将会产 生消息,系统会将这个消息放到窗口所属的应 用程序的消息队列中,等待应用程序的处理。 产生的消息都会依次放到消息队列中,而应用 程序则通过一个消息循环不断地从消息队列中 取出消息,并进行响应。
•2021/2/19
•交互式绘图软件开发
•11
Windows 程序内部运行机制
操作系统所能够完成的每一个特殊功能通常都有一个 函数与其对应,也就是说,操作系统把它所能够完成的 功能以函数的形式提供给应用程序使用,应用程序对这 些函数的调用就叫做系统调用,这些函数的集合就是 Windows应用程序编程接口(Application Programming Interface),简称Windows API。
•2021/2/19
•交互式绘图软件开发
•5
前言
2. 什么是 MFC?
MFC英文全称为Microsoft Foundation Classes (微 软基础类库),是把Windows API进行封装的类库,它是 一个类的集合,通过覆盖Windows API,为编程提供了一 个面向对象的界面。
MFC使Windows程序员能够利用C++面象对象的特 性进行编程。
•2021/2/19
•交互式绘图软件开发
•8
第一讲 Windows程序内部运行原理
•2021/2/19
•交互式绘图软件开发
•9
Windows 程序内部运行机制
Windows编程模型
事件驱动编程模型——以消息为基础,事件驱动之
来源于操作系统的消息 WM_PAINT
WM_KEYDOWN
…
WM_LBUTTONDOWN
如CreateWindow就是一个API函数,应用程序中调用这个函数,操 作系统就会按照该函数提供的参数信息产生一个相应的窗口。
•2021/2/19
•交互式绘图软件开发
•4
前言
1. 什么是 Windows API?(续)
ຫໍສະໝຸດ Baidu
Windows编程的本质:
利用Windows API 函数编写应用程序,让操作系统完成某种特定 的功能 。
前言
什么是Windows编程?
1. 你编写的程序是否遵循了Windows的编 程模型?
2.是否调用了Windows操作系统的应用程序 编程接口函数API,或者对其封装后的 基础类库(如MFC)。
•2021/2/19
•1
前言
关于Windows编程的三个问题
1. 什么是Windows API? 2. 什么是MFC? 3. 为什么要使用MFC?
typedef struct tagMSG {
•2021/2/19
•交互式绘图软件开发
•6
前言
3. 为什么要使用MFC?
可重用性
封装后使方法和属性更紧密的捆绑
常用的功能自动化,减少编写代码的数量
提供应用程序的框架结构
框架结构提供了抽象功能,它远远超出了Windows API的功能。例如:MFC的文档/视图体系结构在API上 建造了一个功能强大的基础结构,它把程序中数据的图 形表示(或称为视图)与数据本身分开。这种抽象对 API而言完全是陌生的,而且在MFC框架结构之外或类 似的类库中也不存在。