




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
概述:,Windows窗口 Windows的机制 Windows事件驱动 Windows 句柄 和 消息,重点:,难点:,Windows事件处理,Windows消息机制 Windows事件驱动,1.1 Windows编程重要概念,Windows开发中,可以通过设置参数来决定窗口类型,这样可以实现多样的窗口外观,比如有菜单栏的窗口、有状态栏的窗口、有滚动条的窗口等等。从技术角度上看,每个窗口都具有窗口句柄(HWND类型的变量),在系统内可以通过窗口句柄定位具体的可见或不可见的窗口。每个窗口又对应着窗口类,同样的窗口类可以用来创建多个具有相同外观和相同特性的窗口,例如Windows的文件夹可以是相同外观,也可以同时具有相同的特性,可以使用滚动条浏览文件等等 。,窗口”是Windows程序实现的基础,大多数Windows程序都是以窗口的方式运行的。网络游戏客户端编程也要用DirectX在窗口基础上实现程序,而网络游戏服务器端编程中,诸如监测工具、GM工具等程序实现也常以窗口方式运行。,Windows窗口,标题栏,菜单栏,工具栏,状态栏,工作区,窗口 边界,最小化按钮,最大化按钮,关闭 按钮,垂直 滚动条,水平 滚动条,1.1 Windows编程重要概念,Windows应用程序,操作系统,计算机硬件之间的相互关系:,1.1 Windows编程重要概念,应用程序,消息队列,操作系统,输入输出设备,箭头表示应用程序可以通知操作系统执行某个具体的动作,如操作系统能够控制声卡发出声音,但它并不知道应该何时发出何种声音,需要应用程序告诉操作系统该发出什么样的声音。,这个关系好比有个机器人能够完成行走的功能,但是,如果人们不告诉它往哪个方向上走,机器人是不会主动行走的。这里的机器人就是操作系统,人们就是应用程序。,向上的箭头表示操作系统能够将输入设备的变化上传给应用程序。如用户按了一下键盘,操作系统马上能够感知到这一事件,并且能够知道用户按下的是哪一个键,操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应。好比有个蚊子叮了我们一口,我们的神经末梢(相当于操作系统)马上感知到这一事件,并传递给了我们的大脑(相当于应用程序),我们的大脑最终决定如何对这一事件作出反应,如将蚊子赶走,或是将蚊子拍死。对事件作出反应的过程就是消息响应。,应用程序,消息队列,操作系统,输入输出设备,1.1 Windows编程重要概念,Windows运行原理,1.1 Windows编程重要概念,Windows运行原理,那么,应用程序是如何通知操作系统执行某个功能的呢?,在应用程序中要完成某个功能,都是以函数调用的形式实现的,同样,应用程序也是以函数调用的方式来通知操作系统执行相应的功能的。操作系统所能够完成的每一个特殊功能通常都有一个函数与其对应。,也就是说,操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API。如CreateWindow就是一个API函数,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口。,Windows事件驱动,1.1 Windows编程重要概念,Windows程序设计围绕事件或消息的产生驱动运行处理函数(过程)。,例如按下鼠标时,系统就会产生一条特定的消息,标识鼠标按键事件的生,Windows程序的执行顺序取决于事件发生的顺序,程序的执行顺序是由顺序产生的消息驱动的,但是消息的产生往往并不要求有次序之分,程序员可以针对消息类型编写程序以处理接受的消息,或者发出其他消息以驱动其他程序,但是不必预先确定消息产生的次序。,所谓消息是描述事件发生的信息。,Windows消息,1.1 Windows编程重要概念,操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序。,typedef struct tagMSG HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; MSG;,Windows消息,1.1 Windows编程重要概念,hwnd 用以检索消息的窗口句柄,若此参数为NULL,则可检索所有驻留在消息队列的消息。,message 代表一个消息的消息值,每个Windows消息都有一个消息值,该值由Windows.h头文件中的宏定义来标识。,wParam和 lParam 包含有关消息的附加信息。,time 指定消息送至队列的事件。,pt 指定消息发送时,屏幕光标的位置。,Windows消息,3.4 Windows编程重要概念,POINT数据型态也是一个结构,它在WINDEF.H中定义如下:,typedef struct tagPOINT LONG x ; LONG y ; POINT, * PPOINT;,Windows消息,1.1 Windows编程重要概念,VC+中存在几种系统定义的消息分类,不同的前缀符号经常用于消息宏识别消息所属的分类,系统定义的消息宏前缀如下:,BM 表示按钮控制消息 CB 表示组合框控制消息 DM 表示默认下拉式按钮控制消息 EM 表示编辑控制消息 LB 表示列表框控制消息 SBM 表示滚动条控制消息 WM 表示窗口消息,Windows的窗口消息如下: WM_CREATE 应用程序创建一个窗口 WM_DESTROY 一个窗口被销毁 WM_MOVE 移动一个窗口 WM_SIZE 改变一个窗口的大小 WM_ACTIVATE 一个窗口被激活或失去激活 WM_QUERYENDSESSION 结束对话框或调用ExitWindows函数 WM_QUIT 结束程序或程序调用postquitmessage函数,Windows消息,1.1 Windows编程重要概念,Windows编程中常用的消息有:窗口管理消息、初始化消息、输入消息、系统消息、剪贴板消息等等,这里重点学习窗口管理的消息。,WM_COMMAND 选择菜单命令项或 某个控件发送一条消息给它的父窗口 WM_TIMER 发生了定时器事件 WM_LBUTTONDOWN 按下鼠标左键 WM_LBUTTONUP 释放鼠标左键 WM_LBUTTONDBLCLK 双击鼠标左键 WM_RBUTTONDOWN 按下鼠标右键 WM_RBUTTONUP 释放鼠标右键 WM_RBUTTONDBLCLK 双击鼠标右键 WM_MBUTTONDOWN 按下鼠标中键 WM_MBUTTONUP 释放鼠标中键 WM_MBUTTONDBLCLK 双击鼠标中键,Windows消息,1.1 Windows编程重要概念,Windows句柄,1.1 Windows编程重要概念,句柄(HANDLE),资源的标识。,操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源。,各种类型的句柄。操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄。,按资源的类型,又可将句柄细分成:,图标句柄 (HICON),光标句柄 (HCURSOR),窗口句柄 (HWND),应用程序实例句柄(HINSTANCE),Windows的多任务和多线程,1.1 Windows编程重要概念,Windows 允许不同的应用程序以轮流的方式同时执行,每一个应 用程序都占用一段很短的时间段来运行,下一个应用程序轮换运行。,CPU 由几个不同的应用程序以轮流的方式共享。判断出下一个运行的应用程序、分配给每个应用程序的时间量是调度程序的工作。,Windows的多任务和多线程,1.1 Windows编程重要概念,调度程序可以非常简单每个应用程序分配固定的运行时间,也可以非常复杂将应用程序设定为不同的优先级和抢先性或低优先级的事件。,就Win9X/NT 而言,调度程序采用基于优先级的抢先占用方式。这就意味着一些应用程序要比其他的应用程序占用处理器更多的时间,但是如果一个应用程序需要CPU 处理的话,在另一任务运行的同时,当前的任务可以被锁定或抢先占用,Windows的多任务和多线程,1.1 Windows编程重要概念,Windows不仅是多任务的,而且还是多线程的。这意味着程序由许多更简单的多个执行线程构成。这些线程(像更重要的进程)如程序一样被调度。,实际上,在计算机上可同时运行3050 个线程,执行不同的任务。所以可能只运行一个程序,但这个程序由一个或多个执行线程构成。,Windows的多任务和多线程,1.1 Windows编程重要概念,下面来看一下计算机中现在正在运行多少个线程。在Windows系统中,同时按Ctrl+Alt+Delete 键,弹出显示正在运行的任务(过程)的当前程序任务管理器。可能和我们所希望的不同,但也很接近。我们希望的是一个显示正在执行的实际线程数的工具或程序,许多共享软件和商用软件工具都能做到这一点,但是Windows 内嵌了这几个工具。,在安装Windows 的目录(一般是Windows)下,可以发现一个名字为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025前沿医疗技术导入与应用咨询服务合同
- 2025年绿色建筑项目施工劳务合作合同修订版
- 2025年绿色生态工厂场地租赁及深度环保服务合同
- 2025年个人与个人间创业项目融资合同
- 2025年度中小学定制校服材质及款式质量达标采购协议
- 二零二五年度金融衍生品交易合同管理规范
- 二零二五版日本留学贷款信用评估与审核合同
- 二零二五年度钢材行业标准化实施服务合同
- 2025版特种设备安装与安全检验服务合同
- 2025版钢材贸易企业知识产权保护合同
- 2024年高级养老护理员职业鉴定考试题库大全-下(多选、判断题)
- 数字经济中的市场结构变化-洞察阐释
- 《肾衰竭患者的护理》课件
- 食品合规管理中级 课件 上篇 第二章 食品合规标法义务及监管
- 2024-2030全球胃肠标记物胶囊行业调研及趋势分析报告
- 中国儿童肥胖诊断评估与管理专家共识解读 课件
- 老年人心理疏导与沟通培训
- SL631水利水电工程单元工程施工质量验收标准第3部分:地基处理与基础工程
- 2025时政试题及答案(100题)
- 数学分析1试题及答案
- 中职班主任培训学生管理
评论
0/150
提交评论