北京交通大学 软件学院课件 Windows编程基础1.ppt

上传人:asd****56 文档编号:87679384 上传时间:2023-04-16 格式:PPT 页数:20 大小:1.10MB
返回 下载 相关 举报
北京交通大学 软件学院课件 Windows编程基础1.ppt_第1页
第1页 / 共20页
北京交通大学 软件学院课件 Windows编程基础1.ppt_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《北京交通大学 软件学院课件 Windows编程基础1.ppt》由会员分享,可在线阅读,更多相关《北京交通大学 软件学院课件 Windows编程基础1.ppt(20页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、概述:Windows窗口Windows的机制Windows事件驱动Windows 句柄 和 消息重点:难点:Windows事件处理Windows消息机制Windows事件驱动1.1 Windows编程重要概念 Windows开发中,可以通过设置参数来决定窗口类型,这样可以实现多样的窗口外观,比如有菜单栏的窗口、有状态栏的窗口、有滚动条的窗口等等。从技术角度上看,每个窗口都具有窗口句柄(HWND类型的变量),在系统内可以通过窗口句柄定位具体的可见或不可见的窗口。每个窗口又对应着窗口类,同样的窗口类可以用来创建多个具有相同外观和相同特性的窗口,例如Windows的文件夹可以是相同外观,也可以同时具

2、有相同的特性,可以使用滚动条浏览文件等等。窗口”是Windows程序实现的基础,大多数Windows程序都是以窗口的方式运行的。网络游戏客户端编程也要用DirectX在窗口基础上实现程序,而网络游戏服务器端编程中,诸如监测工具、GM工具等程序实现也常以窗口方式运行。Windows窗口标题栏 菜单栏工具栏状态栏工作区窗口边界最小化按钮 最大化按钮关闭按钮垂直滚动条水平滚动条1.1 Windows编程重要概念 Windows应用程序,操作系统,计算机硬件之间的相互关系:1.1 Windows编程重要概念Windows运行原理应用程序消息队列操作系统输入输出设备 箭头表示应用程序可以通知操作系统执行

3、某个具体的动作,如操作系统能够控制声卡发出声音,但它并不知道应该何时发出何种声音,需要应用程序告诉操作系统该发出什么样的声音。这个关系好比有个机器人能够完成行走的功能,但是,如果人们不告诉它往哪个方向上走,机器人是不会主动行走的。这里的机器人就是操作系统,人们就是应用程序。向上的箭头表示操作系统能够将输入设备的变化上传给应用程序。如用户按了一下键盘,操作系统马上能够感知到这一事件,并且能够知道用户按下的是哪一个键,操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应。好比有个蚊子叮了我们一口,我们的神经末梢(相当于操作系统)马上感知到这一事

4、件,并传递给了我们的大脑(相当于应用程序),我们的大脑最终决定如何对这一事件作出反应,如将蚊子赶走,或是将蚊子拍死。对事件作出反应的过程就是消息响应。应用程序消息队列操作系统输入输出设备1.1 Windows编程重要概念Windows运行原理1.1 Windows编程重要概念Windows运行原理 那么,应用程序是如何通知操作系统执行某个功能的呢?在应用程序中要完成某个功能,都是以函数调用的形式实现的,同样,应用程序也是以函数调用的方式来通知操作系统执行相应的功能的。操作系统所能够完成的每一个特殊功能通常都有一个函数与其对应。也就是说,操作系统把它所能够完成的功能以函数的形式提供给应用程序使用

5、,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API。如CreateWindow就是一个API函数,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口。Windows事件驱动1.1 Windows编程重要概念Windows程序设计围绕事件或消息的产生驱动运行处理函数(过程)。例如按下鼠标时,系统就会产生一条特定的消息,标识鼠标按键事件的生,Windows程序的执行顺序取决于事件发生的顺序,程序的执行顺序是由顺序产生的

6、消息驱动的,但是消息的产生往往并不要求有次序之分,程序员可以针对消息类型编写程序以处理接受的消息,或者发出其他消息以驱动其他程序,但是不必预先确定消息产生的次序。所谓消息是描述事件发生的信息。Windows消息1.1 Windows编程重要概念 操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序。typedef struct tagMSG HWND hwnd;UINT message;WPARAM wParam;LPARAM lParam;DWORD time;POINT pt;MSG

7、;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

8、,*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_QU

9、ERYENDSESSION 结束对话框或调用ExitWindows函数 WM_QUIT 结束程序或程序调用postquitmessage函数Windows消息1.1 Windows编程重要概念 Windows编程中常用的消息有:窗口管理消息、初始化消息、输入消息、系统消息、剪贴板消息等等,这里重点学习窗口管理的消息。WM_COMMAND 选择菜单命令项或 某个控件发送一条消息给它的父窗口 WM_TIMER 发生了定时器事件 WM_LBUTTONDOWN 按下鼠标左键 WM_LBUTTONUP 释放鼠标左键 WM_LBUTTONDBLCLK 双击鼠标左键 WM_RBUTTONDOWN 按下鼠标右

10、键 WM_RBUTTONUP 释放鼠标右键 WM_RBUTTONDBLCLK 双击鼠标右键 WM_MBUTTONDOWN 按下鼠标中键 WM_MBUTTONUP 释放鼠标中键 WM_MBUTTONDBLCLK 双击鼠标中键Windows消息1.1 Windows编程重要概念Windows句柄1.1 Windows编程重要概念 句柄(HANDLE),资源的标识。操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源。各种类型的句柄。操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄。按资源的类型,又可将句柄细分成:图标句柄 (HICON)光标句柄 (HCURSOR)窗口句柄 (HWND)应

11、用程序实例句柄(HINSTANCE)Windows的多任务和多线程1.1 Windows编程重要概念 Windows 允许不同的应用程序以轮流的方式同时执行,每一个应 用程序都占用一段很短的时间段来运行,下一个应用程序轮换运行。CPU 由几个不同的应用程序以轮流的方式共享。判断出下一个运行的应用程序、分配给每个应用程序的时间量是调度程序的工作。Windows的多任务和多线程1.1 Windows编程重要概念 调度程序可以非常简单每个应用程序分配固定的运行时间,也可以非常复杂将应用程序设定为不同的优先级和抢先性或低优先级的事件。就Win9X/NT 而言,调度程序采用基于优先级的抢先占用方式。这就

12、意味着一些应用程序要比其他的应用程序占用处理器更多的时间,但是如果一个应用程序需要CPU 处理的话,在另一任务运行的同时,当前的任务可以被锁定或抢先占用Windows的多任务和多线程1.1 Windows编程重要概念 Windows不仅是多任务的,而且还是多线程的。这意味着程序由许多更简单的多个执行线程构成。这些线程(像更重要的进程)如程序一样被调度。实际上,在计算机上可同时运行3050 个线程,执行不同的任务。所以可能只运行一个程序,但这个程序由一个或多个执行线程构成。Windows的多任务和多线程1.1 Windows编程重要概念 下面来看一下计算机中现在正在运行多少个线程。在Window

13、s系统中,同时按Ctrl+Alt+Delete 键,弹出显示正在运行的任务(过程)的当前程序任务管理器。可能和我们所希望的不同,但也很接近。我们希望的是一个显示正在执行的实际线程数的工具或程序,许多共享软件和商用软件工具都能做到这一点,但是Windows 内嵌了这几个工具。在安装Windows 的目录(一般是Windows)下,可以发现一个名字为SYSMON.EXE(Windows 95/98)PREFMON.EXE(Windows NT)的可执行程序。这些同学们可以自己是试验一下,或者下载共享软件去看看,具体多线程的用处,在Java基础中讲过,这里不再详细去说明。课堂练习:叙述一下 Windows的的消息机制,并说出几个消息事件。小结:Windows窗口Windows的机制Windows事件驱动Windows 句柄 和 消息

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com