第一讲Windows程序内部运行原理

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

WM_LBUTTONDOWN
WinMain 窗口
窗口过程
消息响应

消息循环
发送消息
消息响应

现 特 定
消息响应
功 能
操作系统
未处理的消息
DefWindowProc 交还给操作系统
句柄来找到对应的资源。按资源的类型,又可将句柄细 分成图标句柄(HICON),光标句柄(HCURSOR), 窗口句柄(HWND),应用程序实例句柄 (HINSTANCE)等等各种类型的句柄。
操作系统给每一个窗口指定的一个唯一的标识号即 窗口句柄。
内容安排
Windows程序内部运行机制 (API) C++ 进阶 MFC框架程序 (“文档/视图”体系结构程序) 在窗口中绘图 在窗口中编辑文本 菜单编程 对话框 界面设计(外观、工具栏、状态栏) 动态链接库 多线程应用程序
第一讲 Windows程序内部运行原理
Windows 程序内部运行机制
HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG;
Windows 程序内部运行机制
小小知识点——“句柄”
句柄(HANDLE),资源的标识。 操作系统要管理和操作各种各样的资源,都是通过
前言
3. 为什么要使用MFC?
可重用性 封装后使方法和属性更紧密的捆绑 常用的功能自动化,减少编写代码的数量 提供应用程序的框架结构
框架结构提供了抽象功能,它远远超出了Windows API的功能。例如:MFC的文档/视图体系结构在API上 建造了一个功能强大的基础结构,它把程序中数据的图 形表示(或称为视图)与数据本身分开。这种抽象对 API而言完全是陌生的,而且在MFC框架结构之外或类 似的类库中也不存在。
相关文档
最新文档