windows应用概述.ppt
《windows应用概述.ppt》由会员分享,可在线阅读,更多相关《windows应用概述.ppt(45页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Windows应用概述nWindows原理原理nWin32与与MFCn事件驱动与消息驱动事件驱动与消息驱动 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Windows原理nWindows-操作系统操作系统n什么是操作系统?什么是操作系统?n两大流派两大流派-unix和和windowsnUnixsolaris,bsd,linux和和macnWindowsos/2和和windowsn多任务、界面化、工具全、资料多多任务、界面化、工具全、资料多 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Microsoft
2、提供的编程接口nWin32 API是微软的操作系统是微软的操作系统Windows提供给开发人员的编程接口,提供给开发人员的编程接口,它决定了我们开发的它决定了我们开发的Windows应用程序应用程序的能力。的能力。nMFC(Microsoft Foundation Class Library)是微软为开发人员提供的类库,)是微软为开发人员提供的类库,在某种意义上是对在某种意义上是对Win32 API的封装的封装 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 APIAPI函数函数的功能的功能为应用程序为应用程序提供提供Windows系系统统特殊函数特殊函数及及数据结构数据结构Win
3、应用程序应用程序可以利用标准可以利用标准大量大量API函数函数调用系统功能调用系统功能是是Win系统系统与与Win应用程序应用程序间的间的标准程标准程序接口序接口窗口管理函数窗口管理函数实现窗口的创实现窗口的创建、移动和修建、移动和修改功能改功能系统服务函数系统服务函数:实现与操作系实现与操作系统有关的多种统有关的多种功能功能图形设备图形设备(GDI)函数函数:实现与设备无实现与设备无关的图形操作关的图形操作功能功能 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 采用交互式方法时,可视化开发平台给出了许多选用的采用交互式方法时,可视化开发平台给出了许多选用的对象对象,程序员可,程
4、序员可选择所需选择所需对象对象并确定其属性,由此搭建起应用程序的并确定其属性,由此搭建起应用程序的“大框架大框架”,并可,并可根据需要进一步编写必要的细节代码段,最后构成完整的根据需要进一步编写必要的细节代码段,最后构成完整的应用程序应用程序Windows的的程序设计语言程序设计语言VCVBVJ都是都是“面向面向对象对象”的程序设计语的程序设计语言言对象对象是是Windows的规范部件的规范部件窗口窗口菜单菜单按钮按钮对话框对话框程序模块程序模块编写编写Windows程序相当一部分工程序相当一部分工作是在创建作是在创建对象对象和和为为对象对象属性赋值属性赋值对象对象特征:具有规范形态和操作模式
5、特征:具有规范形态和操作模式编程方法编程方法传统编写法传统编写法-API交互式方法交互式方法-MFC 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Win32的来源nMicrosoft 32位平台的应用程序编程接口位平台的应用程序编程接口(Application Programming Interface)。)。Mircrosoft的所有的所有32位平台都支持统一的位平台都支持统一的API,包括函数、结构、消息、宏及接口。,包括函数、结构、消息、宏及接口。n基于基于Win32 API所开发的应用程序可以充分挖所开发的应用程序可以充分挖掘掘Windows的的32位操作系统的潜力,在
6、能成位操作系统的潜力,在能成功运行在各种平台上之外,也可以充分利用每功运行在各种平台上之外,也可以充分利用每个平台特有的功能和属性。(受平台限制)个平台特有的功能和属性。(受平台限制)北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Win32 API的分类n窗口管理窗口管理n窗口通用控制窗口通用控制nShell特性特性n图形设备接口图形设备接口n系统服务系统服务n国际特性国际特性n网络服务网络服务 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Win32数据类型 nHANDLE 32位位无符号的整数无符号的整数,句柄句柄 nHINSTANCE 32位位的的无符号整数无
7、符号整数,实例句柄实例句柄 nHWND 32位位的的无符号整数无符号整数,窗口句柄窗口句柄 nHDC 设备描述背景的句柄设备描述背景的句柄 nLONG 32位位带符号整数带符号整数 nLPSTR 线性的线性的32位位字符串指针字符串指针 nWCHAR 16位位的的UNICODE字符字符 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 编写Windows应用程序之要点n(1)窗口的概念窗口的概念n(2)事件驱动的概念事件驱动的概念n(3)句柄句柄n(4)消息消息 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 窗口n系统管理应用程序的基本单位系统管理应用程序的基本单位n应
8、用程序与用户之间交互的接口环境应用程序与用户之间交互的接口环境nWin应用程序基本的操作单元应用程序基本的操作单元n编写一个编写一个Windows应用程序首先应创建应用程序首先应创建一个或多个窗口,随后应用程序的运行一个或多个窗口,随后应用程序的运行过程即是过程即是窗口内部、窗口与窗口之间、窗口内部、窗口与窗口之间、窗口与系统之间窗口与系统之间进行数据处理与数据交进行数据处理与数据交换的过程。换的过程。北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 窗口边界窗口边界工作区工作区控制菜单框控制菜单框下拉菜单下拉菜单水平滚动条水平滚动条垂直滚动条垂直滚动条最大化按钮最大化按钮最小化按钮
9、最小化按钮标题栏标题栏 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 事件驱动nWindows程序设计是针对事件或消息的程序设计是针对事件或消息的处理,消息是描述事件发生的信息处理,消息是描述事件发生的信息(如按如按下鼠标或键盘下鼠标或键盘)nWindows程序的执行顺序取决于事件发程序的执行顺序取决于事件发生的顺序,程序的执行顺序是由顺序产生的顺序,程序的执行顺序是由顺序产生的消息驱动的,但是消息的产生往往生的消息驱动的,但是消息的产生往往并不要求有次序之分。并不要求有次序之分。n事件驱动编程方法事件驱动编程方法-交互式程序。交互式程序。北北 京京 林林 业业 大大 学学 信信
10、 息息 学学 院院 句柄n句柄是一个句柄是一个4字节长的数值,用于标识应字节长的数值,用于标识应用程序中不同的对象和同类对象中不同用程序中不同的对象和同类对象中不同的实例的实例n应用程序通过句柄访问相应的对象信息应用程序通过句柄访问相应的对象信息n常用窗口按钮图标滚动条输出设备控制常用窗口按钮图标滚动条输出设备控制文件文件 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 常用句柄类型及其说明常用句柄类型及其说明HWNDHWND窗口句柄窗口句柄HDCHDC设备环境句设备环境句柄柄HBITMAPHBITMAP位图句柄位图句柄HCURSORHCURSOR光标句柄光标句柄HICONHICO
11、N图标句柄图标句柄HFONTHFONT字体句柄字体句柄HMENUHMENU菜单句柄菜单句柄HPENHPEN画笔句柄画笔句柄HFILEHFILE文件句柄文件句柄HBRUSHHBRUSH画刷句柄画刷句柄HINSTANCEHINSTANCE 当前实例句柄当前实例句柄 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 消息n WindowsWindows应用程序应用程序利用利用WindowsWindows消息消息(Message)(Message)与应用程序及系统进行信息交与应用程序及系统进行信息交换。换。n消息的组成:消息的组成:n消息号:由事先定义好的消息名标识消息号:由事先定义好的消息
12、名标识n字参数字参数 :用于提供消息的附加信息:用于提供消息的附加信息n长字参数:用于提供消息的附加信息长字参数:用于提供消息的附加信息 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 typedef struct tagMSG HWND hwnd;窗口句柄,为窗口句柄,为null,则可检索所有驻留在消息队列中的消息,则可检索所有驻留在消息队列中的消息 UINT message;消息值,由消息值,由Windows.h头文件中的宏定义来标识头文件中的宏定义来标识 WPARAM wParam;包含有关消息的附加信息包含有关消息的附加信息,不同消息其值有所不同不同消息其值有所不同 LPA
13、RAM lParam;DWORD time;指定消息送至队列的时间指定消息送至队列的时间 POINT pt;指定消息发送时屏幕光标的位置,指定消息发送时屏幕光标的位置,数据类型数据类型POINT也是一个结构体也是一个结构体MSG;附加信息附加信息与具体与具体消息号的值有关,消息号的值有关,在在Win中消息用中消息用结构体结构体MSG表示表示typedef struct tagPOINT typedef struct tagPOINT LONG xLONG x;LONG y;LONG y;POINTPOINT;北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Windows常用消息窗口
14、管理消息窗口管理消息初始化消息初始化消息输入消息输入消息系统消息系统消息剪贴板消息剪贴板消息控制处理消息控制处理消息控制通知消息控制通知消息滚动条通知消息滚动条通知消息非用户区消息非用户区消息MDI消息消息DDE消息消息应用程序自定义的消息应用程序自定义的消息 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 MFC-编程框架nMFC 中的各种类结合起来构成了一个应用程序框架,中的各种类结合起来构成了一个应用程序框架,用以让程序员建立用以让程序员建立Windows下的应用程序,相对下的应用程序,相对SDK来说更为简单的方法。来说更为简单的方法。n具体来说,具体来说,MFC框架定义了应
15、用程序的轮廓,并提供框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有过预定义的接口把具体应用程序特有 的东西填入这个的东西填入这个轮廓。轮廓。nMicrosoft Visual C+提供了相应的工具来完成这个提供了相应的工具来完成这个工作:工作:AppWizard可以用来生成初步的框架文件(代可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户码和资源等);资源编辑器用于帮助直观地设计用户接口;接口;ClassWizard用来协助添加代码到框架文件;用来协助添加代
16、码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑最后,编译,则通过类库实现了应用程序特定的逻辑。北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 封装封装 n构成构成MFC框架的是框架的是MFC类库,一种类库,一种C+类库,具有明类库,具有明显封装性质的类库:显封装性质的类库:n(1)对)对Win32应用程序编程接口的封装:用一个应用程序编程接口的封装:用一个C+Object来包装一个来包装一个Windows Object。n(2)对应用程序概念的封装:)对应用程序概念的封装:MFC把把win32中许多有含义的中许多有含义的处理序列封装起来,替程序员完成这些工作。另外,处
17、理序列封装起来,替程序员完成这些工作。另外,MFC提提出了以文档出了以文档-视图为中心的编程模式,视图为中心的编程模式,MFC类库封装了对它的类库封装了对它的支持。支持。n(3)对)对COM/OLE特性的封装:特性的封装:MFC的的OLE类封装了类封装了OLE API大量的复杂工作,这些类提供了实现大量的复杂工作,这些类提供了实现OLE的更高级接口。的更高级接口。n(4)对)对ODBC功能的封装:以少量的能提供与功能的封装:以少量的能提供与ODBC之间更之间更高级接口的高级接口的C+类,封装了类,封装了ODBC API的大量的复杂的工作,的大量的复杂的工作,提供了一种数据库编程模式。提供了一种
18、数据库编程模式。n几个概念的解释几个概念的解释 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 继承继承 nMFC抽象出众多类的共同特性,设计出一些基类作为抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础。其中,最重要的类是实现其他类的基础。其中,最重要的类是CObject和和CCmdTarget。nCObject是是MFC的根类,绝大多数的根类,绝大多数MFC类是其派生的,包括类是其派生的,包括CCmdTarget。CObject 实现了一些重要的特性,包括动态实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调试的支持,等等。类信息、动态创建、对象序列
19、化、对程序调试的支持,等等。所有从所有从CObject派生的类都将具备或者可以具备派生的类都将具备或者可以具备CObject所拥所拥有的特性。有的特性。nCCmdTarget通过封装一些属性和方法,提供了消息处理的通过封装一些属性和方法,提供了消息处理的架构。架构。MFC中,任何可以处理消息的类都从中,任何可以处理消息的类都从CCmdTarget派派生。生。n对每种性质不同的对象(窗口、应用程序、文档等),对每种性质不同的对象(窗口、应用程序、文档等),MFC都设计了一组类对这些对象进行封装,每一组类都设计了一组类对这些对象进行封装,每一组类都有一个基类,从基类派生出众多更具体的类。例如:都有
20、一个基类,从基类派生出众多更具体的类。例如:CWnd、CwinThread、Cdocument等。等。北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 虚拟函数和动态约束 nMFC以以“C+”为基础,必然支持虚拟函数和为基础,必然支持虚拟函数和动态约束。但为了避免导致虚拟函数表过于臃动态约束。但为了避免导致虚拟函数表过于臃肿(消耗内存、效率低下),肿(消耗内存、效率低下),MFC建立了消息建立了消息映射机制,以富有效率、便于使用的手段解决映射机制,以富有效率、便于使用的手段解决消息处理函数的动态约束问题。消息处理函数的动态约束问题。n通过虚拟函数和消息映射,通过虚拟函数和消息映射,M
21、FC类提供了丰富类提供了丰富的编程接口。程序员继承基类的同时,把自己的编程接口。程序员继承基类的同时,把自己实现的虚拟函数和消息处理函数嵌入实现的虚拟函数和消息处理函数嵌入MFC的编的编程框架。程框架。MFC编程框架将在适当的时候、适当编程框架将在适当的时候、适当的地方来调用程序的代码。的地方来调用程序的代码。北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 MFC的宏观框架体系n如前所述,如前所述,MFC实现了对应用程序概念的封装,把类、实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起类的继承、动态约束、类的关系和相互作用等封装起来。这样封装的结果对
22、程序员来说,是一套开发模板来。这样封装的结果对程序员来说,是一套开发模板(或者说模式)。(或者说模式)。n针对不同的应用和目的,程序员采用不同的模板。例针对不同的应用和目的,程序员采用不同的模板。例如,如,SDI应用程序的模板,应用程序的模板,MDI应用程序的模板,规应用程序的模板,规则则DLL应用程序的模板,扩展应用程序的模板,扩展DLL应用程序的模板,应用程序的模板,OLE/ACTIVEX应用程序的模板,等等。应用程序的模板,等等。n这些模板都采用了以文档这些模板都采用了以文档-视为中心的思想,每一个模视为中心的思想,每一个模板都包含一组特定的类。典型的板都包含一组特定的类。典型的MDI应
23、用程序的构成应用程序的构成将在下一节具体讨论。将在下一节具体讨论。北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 了解MFC机理的作用n内部机制有助于写出功能灵活而强大的程序。内部机制有助于写出功能灵活而强大的程序。n为了实现消息映射机制,为了实现消息映射机制,MFC编程框架必须要保证编程框架必须要保证首先得到消息,然后按既定的方法进行处理。首先得到消息,然后按既定的方法进行处理。n为了实现对为了实现对DLL编程的支持和多线程编程的支持,编程的支持和多线程编程的支持,MFC内部使用了特别的处理方法,使用模块状态、内部使用了特别的处理方法,使用模块状态、线程状态等来管理一些重要信息。
24、线程状态等来管理一些重要信息。nMFC内部处理对程序员来说是透明的。内部处理对程序员来说是透明的。北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 MFC特性总结nMFC封装了封装了Win32 API,OLE API,ODBC API等底等底层函数的功能,并提供更高一层的接口,简化了编程。层函数的功能,并提供更高一层的接口,简化了编程。同时,同时,MFC支持对底层支持对底层API的直接调用。的直接调用。nMFC提供了一个提供了一个Windows应用程序开发模式,对程序应用程序开发模式,对程序的控制主要是由的控制主要是由MFC框架完成,还覆盖大部分的功能,框架完成,还覆盖大部分的功能,
25、例如,预定义或实现了许多事件和消息处理。框架或例如,预定义或实现了许多事件和消息处理。框架或者由其本身处理事件,不依赖程序员的代码;或者调者由其本身处理事件,不依赖程序员的代码;或者调用程序员的代码来处理应用程序特定的事件。用程序员的代码来处理应用程序特定的事件。nMFC是是C+类库,程序员通过使用、继承和扩展适当类库,程序员通过使用、继承和扩展适当的类来实现特定的目的。例如,继承时,应用程序特的类来实现特定的目的。例如,继承时,应用程序特定的事件由程序员的派生类来处理,不感兴趣的由基定的事件由程序员的派生类来处理,不感兴趣的由基类处理。实现这种功能的基础是类处理。实现这种功能的基础是C+对继
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- windows 应用 概述
限制150内