当前位置首页 > 计算机 > windows
搜柄,搜必应! 快速导航 | 使用教程

windows编程复习纲要课件

文档格式:PPT| 48 页|大小 400.84KB|2024-11-14 发布|举报 | 版权申诉
第1页
第2页
第3页
下载文档到电脑,查找使用更方便 还剩页未读,继续阅读>>
1 / 48
此文档下载收益归作者所有 下载文档
  • 版权提示
  • 文本预览
  • 常见问题
  • Fundamentals of Computers,*,*,制作:刘晓翔,JINAN University,暨南大学电气信息学院,Windows,编程,Fundamentals of Computers,制作:刘晓翔,JINAN University,暨南大学电气信息学院,Windows,编程,*,*,Fundamentals of Computers,暨南大学电气信息学院,Windows,编程,*,制作:刘晓翔,2024/11/14,1,前言,什么是,Windows API,?,有过编程经验的读者都应该知道,在传统应用程序中要完成某个功能,都是以,函数调用,的形式实现的,同样,,Windows,应用程序也是以函数调用的方式来通知操作系统执行相应的功能的操作系统所能够完成的每一个特殊功能通常都有一个函数与其对应,也就是说,操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是,Windows,操作系统提供给应用程序编程的接口,(Application Programming Interface),,简称,Windows API,。

    如,CreateWindow,就是一个,API,函数,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口这些,API,函数都在,windows.h,中声明2023/9/211前言 什么是 Windows API?,2024/11/14,2,什么是,MFC,?,MFC,英文全称为,Microsoft Foundation Classes,(微软基础类库),是把,Windows API,进行封装的类库,它是一个类的集合,通过覆盖,Windows API,,为编程提供了一个,面向对象,的界面MFC,使,Windows,程序员能够利用,C+,面象对象的特性进行编程前言,2023/9/212什么是 MFC?MFC,2024/11/14,3,为什么要使用,MFC,?,可重用性,封装后使方法和属性更紧密的捆绑,常用的功能自动化,减少编写代码的数量,提供应用程序的框架结构,框架结构提供了抽象功能,它远远超出了,Windows API,的功能例如:,MFC,的文档,/,视图体系结构在,API,上建造了一个功能强大的基础结构,它把程序中数据的图形表示(或成为视图)与数据本身分开。

    这种抽象对,API,而言完全是陌生的,而且在,MFC,框架结构之外或类似的类库中也不存在前言,2023/9/213为什么要使用MFC?可重用性前言,2024/11/14,4,Windows,程序内部运行机制,Windows,编程模型,事件驱动编程模型,以消息为基础,事件驱动之,WM_PAINT,WM_KEYDOWN,WM_LBUTTONDOWN,消息响应,消息响应,消息响应,DefWindowProc,来源于操作系统的消,息,消,息队列,WinMain,消息循环,发送消息,窗口过程,未处理的消息,应用程序,窗口,2023/9/214Windows 程序内部运行机制Wind,2024/11/14,5,Windows,程序内部运行机制,小小知识点,“,句柄”,句柄(,HANDLE,),资源的标识操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源按资源的类型,又可将句柄细分成图标句柄(,HICON,),光标句柄(,HCURSOR,),窗口句柄(,HWND,),应用程序实例句柄(,HINSTANCE,)等等各种类型的句柄操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄2023/9/215Windows 程序内部运行机制小小知识,2024/11/14,6,Windows,程序内部运行机制,编写,Windows,应用程序的要素,消息响应,消息响应,消息响应,DefWindowProc,WinMain,消息循环,发送消息,窗口过程,未处理的消息,应用程序,1,入口函数,WinMain,2,创建窗口,3,发送消息与消息循环,4,窗口过程与消息响应,消息,窗口,2023/9/216Windows 程序内部运行机制编写Wi,2024/11/14,7,窗口类第二个成员变量,lpfnWndProc,指定了这一类型窗口的过程函数,也称,回调函数,。

    回调函数的原理是这样的,当应用程序收到给某一窗口的消息时(还记得前面讲过的消息通常与窗口相关的吗?),就应该调用某一函数来处理这条消息这一,调用过程不用应用程序自己来实施,而由操作系统来完成,,但是,回调函数本身的代码必须由应用程序自己完成对于一条消息,操作系统到底调用应用程序中的哪个函数(回调函数)来处理呢?操作系统调用的就是接受消息的窗口所属的类型中的,lpfnWndProc,成员指定的函数每一种不同类型的窗口都有自己专用的回调函数,该函数就是通过,lpfnWndProc,成员指定的Windows,程序内部运行机制,窗口过程函数,2023/9/217 窗口类第二个成员变量lpfnWn,2024/11/14,8,Windows,程序内部运行机制,创建窗口,创建一个完整的窗口需要经过下面四个操作步骤:,Step1:,设计一个窗口类;,Step2:,注册窗口类;,Step3:,创建窗口;,Step4:,显示及更新窗口2023/9/218Windows 程序内部运行机制创建窗口,2024/11/14,9,Windows,程序内部运行机制,WM_PAINT,Windows,把一个最小的需要重绘的正方形区域叫做,“无效区域”,。

    当,Windows,发现了一个“无效区域“后,它就会向该应用程序发送一个,WM_PAINT,消息,通知应用程序重新绘制窗口当窗口从无到有、改变尺寸、最小化后再恢复、被其他窗口遮盖后再显示时,窗口的客户区都将变为无效那么,应用程序是如何通知操作系统执行某个功能的呢?,2023/9/219Windows 程序内部运行机制WM_P,2024/11/14,10,Windows,程序内部运行机制,自行发送消息的两种方式,发送消息可以使用,SendMessage,和,PostMessage,函数SendMessage,将消息,直接发送给窗口,,并,调用该窗口过程,进行处理在窗口过程对消息处理完毕后,该函数才返回PostMessage,函数,将消息放入,与创建窗口的线程相关联的,消息队列,后立即返回2023/9/2110Windows 程序内部运行机制自行发,2024/11/14,11,虚函数与多态性,当,C+,编译器在编译的时候,发现基类的函数是虚函数,这个时候,C+,就会采用迟绑定(,late binding,)的技术,在运行时,依据对象的类型(在示例程序中,我们传递的派生类对象的地址)来确认调用的哪一个函数,这种能力就做,C+,的,多态性,。

    在基类的函数前加上,virtual,关键字,该函数则为,虚函数,虚函数派生下去仍为虚函数,而且可以省略,virtual,关键字在派生类中重写该函数,,运行时将会根据指针实际所指的对象的类型来调用相应的函数,如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数掌握,C+,2023/9/2111虚函数与多态性 当C+编,2024/11/14,12,纯虚函数与抽象类,纯虚函数,是指被标明为不具体实现的虚函数纯虚函数可以让类先具有一个操作名称,而没有操作内容,让派生类在继承时再去具体地给出定义凡是含有纯虚函数的类叫做,抽象类,这种可不能实例化对象,只能作为基类为派生类服务注意:,派生类中必须实现基类的纯虚函数,否则,派生类也变成了抽象类,不能实例化对象纯虚函数多用在一些方法行为的实际上在设计基类时,不太好确定或将来的行为多种多样,而此行为又是必需的,我们就可以在基类的设计中,以纯虚函数来声明次中行为,而不具体实现它掌握,C+,2023/9/2112纯虚函数与抽象类 纯虚函数,2024/11/14,13,const,的使用方法,const,成员函数,任何不会修改数据成员的函数都应该声明为,const,类型,。

    如果在编写,const,成员函数时,不慎修改了数据成员,或者调用了其它非,const,成员函数,编译器将指出错误,这无疑会提高程序的健壮性2023/9/2113const的使用方法const成员函数,2024/11/14,14,类中的,Static,成员变量与函数,静态成员函数与变量的特性,静态成员函数和静态成员变量属于类本身,在类加载的时候(编译阶段),即为它们分配了空间,因此可以通过,类名,:,函数名,或,类名,:,变量名,来访问而非静态函数和非静态成员属于对象的方法和数据,也就是应该首先产生类的对象,然后通过类的对象去引用静态函数不属于某个具体的对象,也就是说,在还没有产生类的任何一个具体对象时,静态函数就已经存在于程序的代码区了但这是类的非静态成员还没有分配内存空间,这样,在静态成员函数中是没有办法对类非静态成员进行操作的因此,,在静态成员函数中只能访问静态成员变量,不能访问非静态成员函数和非静态成员变量,非静态成员函数中可以调用静态成员函数2023/9/2114类中的Static成员变量与函数静态成,2024/11/14,15,MFC,框架程序剖析,MFC,单文档界面程序初探(简答题),test,.h,、,test.cpp,应用程序类:,CTestApp,(由,CWinApp,继承而来),每一个,MFC,程序有且仅有一个主应用程序类对象,theApp,,它代表一个程序本体,用于管理和维护主应用程序,MainFrm,.h,、,MainFrm,.cpp,主框架类,C,MainFrame,(由,CWnd,继承而来),主框架是应用程序的主体窗口,其他的窗口(如视类窗口、工具条、状态条)都依附于主框架窗口(覆盖在它上面)。

    2023/9/2115MFC框架程序剖析MFC单文档界面程序,2024/11/14,16,MFC,框架程序剖析,MFC,单文档界面程序初探(续),testView.,h,、,testView.cpp,视图类:,CTestView,(由,CWnd,继承而来),负责管理和维护图形显示操作testDoc,.h,、,testDoc,.cpp,文档类:,CTestDoc,(由,CDocumet,继承而来),负责显示数据的后台管理和维护2023/9/2116MFC框架程序剖析MFC单文档界面程序,2024/11/14,17,MFC,框架程序剖析,MFC,中的全局对象,theApp,初始化,CTestAPP,对象,应用程序内存获得配置,调用基类,CWinApp,构造函数(在,MFC,源码目录的文件中,AppCore.cpp,),初始化完成程序运行时的一些初始化工作注意:,由于,theApp,是个全局对象,,所以,CWinApp,构造函数会在入口函数,WinMain,之前运行,2023/9/2117MFC框架程序剖析MFC中的全局对象t,2024/11/14,18,图形操作,设备描述表,DC,在,Windows,平台下,窗口的所有图形操作都是利用,DC,来完成的。

    如果使用,GetDC,来得到,DC,的句柄,在完成图形操作后,必须调用,ReleaseDC,来释放,DC,所占用的资源,以避免内存泄漏利用计算机作图,窗口相当于画布,因此,在获取,DC,的句柄时,总是和一个指定的窗口相关联2023/9/2118图形操作设备描述表DC在Windows,2024/11/14,19,简单绘图,利用,CClientDC,、,CWindowDC,类绘图(简答题),CClientDC,派生于,CDC,类,并且在构造时调用,GetDC,函数,在析构时调用,ReleaseDC,函数它与,CDC,一样,都是实现在窗口的,客户区,绘图CWindowDC,派生于,CDC,类,并且在构造时调用,GetWin。

    点击阅读更多内容
    卖家[上传人]:Xgjmqtwzdgjnqtwadg34
    资质:实名认证
    相关文档
    正为您匹配相似的精品文档