




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Windows程序设计,主讲:刘永伟Liuyw,2020/6/1,2,第1章Windows应用程序基础知识,本章主要内容介绍Windows平台下程序运行的内部机制,涉及到一些术语,为进一步学习MFC程序打下基础。,2020/6/1,3,1.1API与SDKAPI:Windows操作系统提供了各种各样的函数,以方便我们开发Windows应用程序,这些函数是Windows操作系统提供给应用程序编程的接口,即ApplicationProgrammingInterface,简称API函数。可在MSDN中查到。SDK:SoftwareDevelopmentKit,软件开发包,是开发所需要资源的一个集合。注:API和SDK已成为广泛使用的术语,2020/6/1,4,1.2窗口与句柄窗口:屏幕上的一块矩形区域,是Windows应用程序与用户进行交互的接口。利用窗口,可以接收用户的输入,以及显示输出。句柄(HANDLE):在Windows程序中,有各种各样的资源(窗口、图标、光标等),系统在创建这些资源时会为它们分配内存,并返回标识这些资源的标识号(整数)。HWNDHICONHCURSORHBURSH,2020/6/1,5,1.3消息驱动、消息队列、消息响应Windows是一种消息驱动(事件驱动)的操作系统。操作系统能够将输入设备的变化上传给应用程序。如用户在某个程序活动时按了一下键盘,操作系统马上能够感知到这一事件,并且能够知道用户按下的是哪一个键,操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应。MSG,2020/6/1,6,操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序,参看MSDN。MSG结构定义如下:typedefstructtagMSGHWNDhwnd;UINTmessage;WPARAMwParam;LPARAMlParam;DWORDtime;POINTpt;MSG;,2020/6/1,7,从变量的类型区分变量的用途intx,y;x=30;y=30;/x和y既可以用来表示坐标点,也可以用来表示宽度和高度,还可以用来表示身高和体重。typedefintWIDTHtypedefintHEIGHTWIDTHx;HEIGHTy;/好处:我们从变量的类型上就可以知道x和y是用来表示宽度和高度。,2020/6/1,8,消息队列:操作系统为每个应用程序建立的用于盛放消息的先进先出的缓冲区。消息响应:应用程序对消息进行处理的过程。,2020/6/1,9,1.4WinMain函数(Windows程序的入口函数)1.4.1WinMain函数定义intWINAPIWinMain(HINSTANCEhInstance,/handletocurrentinstanceHINSTANCEhPrevInstance,/handletopreviousinstanceLPSTRlpCmdLine,/commandlineintnCmdShow/showstate);,2020/6/1,10,1.4.2窗口的创建创建一个完整的窗口需要经过下面四个操作步骤:设计一个窗口类WNDCLASS注册窗口类RegisterClass()创建窗口CreateWindow()显示及更新窗口ShowWindow()UpdateWindow(),2020/6/1,11,Step1设计一个窗口类一个完整的窗口具有许多特征,包括光标、图标、背景色等,完成设计后还要起一个名字。Windows已经为我们定义好了一个窗口所应具有的基本属性(WNDCLASS),我们只需要像做填空一样将需要填充的部分填写完整,一种窗口就设计好了。,2020/6/1,12,typedefstruct_WNDCLASSUINTstyle;WNDPROClpfnWndProc;intcbClsExtra;intcbWndExtra;HANDLEhInstance;HICONhIcon;HCURSORhCursor;HBRUSHhbrBackground;LPCTSTRlpszMenuName;LPCTSTRlpszClassName;WNDCLASS;,2020/6/1,13,窗口类的类型在我们的程序中经常要用到一类变量,这个变量里的每一位(bit)都对应某一种特性。当该变量的某位为1时,表示有该位对应的那种特性,当该位为0时,即没有该位所对应的特性。当变量中的某几位同时为1时,就表示同时具有几种特性的组合。一个变量中的哪一位代表哪种意义,不容易记忆,所以我们经常根据特征的英文拼写的大写去定义一些宏,该宏所对应的数值中仅有与该特征相对应的那一位(bit)为1,其余的bit都为0。我们使用gotodefinition就能发现CS_VREDRAW=0 x0001,CS_HREDRAW=0 x0002,CS_DBLCLKS=0 x0008,CS_NOCLOSE=0 x0200。他们的共同点就是只有一位为1,其余位都为0。如果我们希望某一变量的数值既有CS_VREDRAW特性,又有CS_HREDRAW特性,我们只需使用二进制OR(|)操作符将他们进行或运算相组合,如style=CS_VREDRAW|CS_HREDRAW|CS_NOCLOSE。如果我们希望在某一变量原有的几个特征上去掉其中一个特征,用取反()之后再进行与(&)运算,就能够实现,如在刚才的style的基础上去掉CS_NOCLOSE特征,可以用style&CS_NOCLOSE实现。,2020/6/1,14,窗口过程函数第二个成员变量lpfnWndProc指定了这一类型窗口的过程函数,也称回调函数。回调函数的原理是这样的,当应用程序收到给某一窗口的消息时(消息通常与窗口相关),就应该调用某一函数来处理这条消息。这一调用过程不用应用程序自己来实施,而由操作系统来完成,但是,回调函数本身的代码必须由应用程序自己完成。对于一条消息,操作系统到底调用应用程序中的哪个函数(回调函数)来处理呢?操作系统调用的就是接受消息的窗口所属的类型中的lpfnWndProc成员指定的函数。每一种不同类型的窗口都有自己专用的回调函数,该函数就是通过lpfnWndProc成员指定的。,2020/6/1,15,1.4.3消息循环在创建窗口、显示窗口、更新窗口后,我们需要编写一个消息循环,不断从消息队列中取出消息,并进行响应。GetMessage函数取出消息TranslateMessage函数用于将虚拟键消息转换为字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业设计中的人机工程学应用
- 工业自动化技术智能制造与生产效率提升
- 工业设计与人类健康的关系探讨
- 工业设计与产品造型创新
- 工作中的沟通协调技巧培训
- 工业风格建筑的设计与实践
- 工作场所的多元沟通方式
- 工程填方区的防护性绿化技术探索与实践
- 工程机械设计中的材料选择与仿真
- 工程劳务费用合理计算与评估
- 2025年四川省高考物理试卷真题(含答案)
- 炸鸡店的产品创新与口味调研
- 2025年共享办公空间增值服务运营模式创新与产业链创新模式报告
- 电气控制柜面试题及答案
- 药房药品追溯管理制度
- 陕西省铜川市2025年八下英语期末监测试题含答案
- 缺血性卒中脑保护中国专家共识(2025)解读
- 2025年福建省厦门市中考物理模拟试卷
- 海洋垃圾资源化利用与环境影响评估-洞察阐释
- IEC60335-1中文版本大全
- 代谢相关脂肪性肝病防治指南2024年版解读
评论
0/150
提交评论