- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Windows程序设计教程第3章Windows应用程序的面向对象在早期的编程生涯中,程序员采用C语言和WindowsAPI函数进行Windows程序设计.但采用这种方式进行程序开发,使得开发过程艰苦、乏味。随着编程技术的不断发展,Windows编程采用了面向对象的程序设计思想(ObjectOrientedProgramming,OOP)。这种思想集抽象性、封装性、集成性和多态性于一体,提高了编程的效率。下面对Windows应用程序中的面向对象思想进行介绍。3.1应用程序主函数中类的封装
在2.3节中,通过对Windows应用程序结构进行分析可以得知,主函数的任务是创建并显示窗口和实现消息循环。从面向对象的思想进行分析,为了形成程序框架,应该声明两个类:应用程序类和窗口类。3.1.1窗口类的声明在窗口类中,应该实现窗口类的设计、窗口类的注册、窗口的创建和显示等功能。上述功能是窗口类的成员函数,为了辅助这些成员函数,还应该有一个数据成员——HWND类型的窗口句柄。3.1.2应用程序类的声明如果把主函数中的整个函数体作为一个对象,并把它叫做应用程序,则还应该声明一个应用程序类,并命名为CWinApp。theApp是应用程序类的对象,代表了这个应用程序,只有唯一的一个.在CWinApp类中,主要完成两个功能:一是调用成员函数InitInstance()来完成窗口的设计、注册、创建与显示工作.二是调用成员函数Run()来实现消息循环。3.1.3主函数封装后的程序对窗口类和应用程序类进行封装后,再来设计Windows应用程序就显得十分简单了。DC(DeviceContext)设备上下文或设备环境(DC)是一种包含有关某个设备(如显示器或打印机)的绘制属性信息的Windows数据结构。所有绘制调用都通过设备上下文对象进行,这些对象封装了用于绘制线条、形状和文本的WindowsAPI。设备上下文允许在Windows中进行与设备无关的绘制。设备上下文可用于绘制到屏幕、打印机或者图元文件CDC设备上下文类包括CDC和它的派生类CClientDC、CPaintDC、CWindowDC、CMetaFileDC。PAINTSTRUCTPAINTSTRUCT结构体包含了用于绘制窗口客户区的信息。例如要更新的客户区的矩形区域的大小等等.PAINTSTRUCT定义
typedefstructtagPAINTSTRUCT{HDChdc;//是用于绘制的句柄,BOOLfErase;//是否擦除背景RECTrcPaint;//绘制的矩形范围BOOLfRestore;//预留的不用BOOLfIncUpdate;BYTErgbReserved[32];}PAINTSTRUCT,*PPAINTSTRUCT;BeginPaintBeginPaint函数为指定窗口进行绘图工作的准备,并用将和绘图有关的信息填充到一个PAINTSTRUCT结构中。如果函数成功,返回值是指定窗口的“显示设备描述表”句柄。如果函数失败,返回值是NULL,表明没有得到显示设备的内容.EndPaintEndPaint函数标记指定窗口的绘画过程结束;这个函数在每次调用BeginPaint函数之后被请求,但仅仅在绘画完成以后。3.2派生类在3.2节中,将窗口类CFrameWnd和应用程序类CWinApp封装在一个类库中,使用起来灵活了许多。但如果需要对应用程序进行个性化设计,就不是那么容易了。例如,需要改变窗口的背景颜色,此时就需要修改系统提供的窗口函数。为了解决这个问题,可以引用C++类的继承性和多态性。程序员可以通过设计派生类来得到自己想要的应用程序窗口。下面对派生类进行详细介绍。3.2.1应用程序类的派生类应用程序对各个类进行了封装,为了方便程序的设计,需要对其进行派生操作。为了让派生类能更好地修改原有的属性,在基类中要将一些成员函数设置为虚函数(实现多态)。这样,在派生类中,可以重写虚函数满足特别的要求。3.2.2窗口类的派生类
与应用程序类类似,窗口类也可以拥有自己的派生类。读者可以参照创建应用程序类的派生类的方法为窗口类创建派生类,本书在此就不再详细
您可能关注的文档
- 第九章------会计账簿.ppt
- 数字电路第1章.ppt
- 第5章-输入输出及异常处理(4).pptx
- 第八章--输入输出系统.ppt
- 第5讲-氧化还原反应.ppt
- 第2讲-氧化还原反应.ppt
- 概率论第七章--参数估计.ppt
- 岳阳楼记--第一课时--王苗.ppt
- 第十二章-面向对象编程(Chapter12-Object-Oriented-Design).pptx
- 第1章-C语言概述.pptx
- 2018-2022中考地理分项汇编:中国的经济发展.pdf
- 高中数学重难点汇编专题:圆锥曲线常考题型圆锥曲线中的存在性问题与面积问题(带答案).pdf
- 新高考数学排列组合训练专题:直接法模型(与答案).pdf
- 高一数学考题汇编:七种平面向量的概念及其线性运算、平面向量的基本定理解题方法.pdf
- 高中数学重难点汇编专题:圆锥曲线常考题型圆锥曲线中的存在性问题与面积问题(带答案).pdf
- 国家电网公司安规配电部分题库(含答案).pdf
- 高中数学重难点汇编专题:椭圆(与答案).pdf
- 2018-2022中考地理分项汇编:中国的经济发展.pdf
- 药剂学考试题库及答案.pdf
- 2023年-2024年国家电网招聘之其他工学类通关试题库(有答案) .pdf
文档评论(0)