2023人机交互期末复习

考试题型及分值分布

1、选择题(10题、20分)
2、填空题(10题、20分)
3、判断题(可选、5题、10分)
4、解答题(5~6题、30分)
5、分析计算题(1~2题、20分)
注意:答案有多条时,用1、2、3形式分别列出。

笔试重点

1、掌握人机交互技术基本概念、研究内容及发展趋势
2、主要人机交互设备及其主要原理
3、行为模型、结构模型的主要研究内容及其特点,掌握模型的相互转换
4、能够根据案例分析某软件结构的行为模型或结构模型
5、掌握图形用户界面的基本原则
6、掌握移动互联网设计的基本原则及其特点
7、掌握几种基本的软件体系结构
8、熟悉LOTOS的几种关系及其语法
9、什么是可用性及其可用性的基本原则
10、案例综合分析
11、消息循环机制
12、操作系统发展历史及发展趋势

1、人机交互技术基本概念、研究内容及发展趋势

人机交互的概念

什么是人机交互
  • 人机交互(Human-Computer Interaction,HCI)是关于设计、评价和实现供人们使用的交互式计算机系统,且围绕这些方面的主要现象进行研究的科学(ACM SIGCHI,1992,第6页)
  • 人机交互是一门综合学科,它与认知心理学、人机工程学、多媒体技术、虚拟现实技术等密切相关。其中,认知心理学与人机工程学是人机交互技术的理论基础,而多媒体技术、虚拟现实技术与人机交互是相互交叉和渗透的。

人机交互研究内容

  • 人机交互界面表示模型与设计方法(Model and Methodology)
  • 可用性分析与评估(Usability and Evaluation)
  • 多通道交互技术(Multi-Modal)
  • 认知与智能用户界面(Intelligent User Interface,IUI)
  • 群件(Groupware)
  • Web设计(Web-Interaction)
  • 移动界面设计(Mobile and Ubicomp)

人机交互发展趋势 ★

在未来的计算机系统中,将更加强调“以人为本”、“自然、和谐”的交互方式,以实现人机高效合作。

  1. 集成化

人机交互将呈现出多样化、多通道交互的特点。桌面和非桌面界面,可见和不可见界面,二维与三维输入,直接与间接操纵,语音、手势、表情、眼动、唇动、头动、肢体姿势、触觉、嗅觉、味觉以及键盘、鼠标等交互手段将集成在一起,是新一代自然、高效的交互技术的一个发展方向。

  1. 网络化

无线互联网、移动通信网的快速发展,对人机交互技术提出了更高的要求。新一代的人机交互技术需要考虑在不同设备、不同网络、不同平台之间的无缝过渡和扩展,支持人们通过跨地域的网络(有线与无线、电信网与互联网等)在世界上任何地方用多种简单的自然方式进行人机交互,而且包括支持多个用户之间以协作的方式进行交互。另外,网格技术的发展也为人机交互技术的发展提供了很好的机遇。

  1. 智能化

目前,用户使用键盘和鼠标等设备进行的交互输入都是精确的输入,但人们的动作或思想等往往并不很精确,人类语言本身也具有高度模糊性,人们在生活中常常习惯于使用大量的非精确的信息交流。因此,在人机交互中,使计算机更好地自动捕捉人的姿态、手势、语音和上下文等信息,了解人的意图,并做出合适的反馈或动作,提高交互活动的自然性和高效性,使人—机之间的交互像人—人交互一样自然、方便,是计算机科学家正在积极探索的新一代交互技术的一个重要内容。

  1. 标准化

目前,在人机交互领域,ISO已正式发布了许多的国际标准,以指导产品设计、测试和可用性评估等。但人机交互标准的设定是一项长期而艰巨的任务,并随着社会需求的变化而不断变化。

人机交互的发展历史

  • 命令行界面交互阶段
    • 计算机语言经历了由最初的机器语言,而后是汇编语言,直至高级语言的发展过程。这个过程也可以看作早期的人机交互的一个发展过程。
    • 命令行界面可以看作第一代人机界面。在这种界面中,计算机的使用者被看成操作员,计算机对输入信息一般只做出被动的反应,操作员主要通过操作键盘输入数据和命令信息,界面输出以字符为主,因此这种人机界面交互方式缺乏自然性。
  • 图形用户界面(GUI)交互阶段
    • 图形用户界面(Graphical User Interface,GUI)的出现,使人机交互方式发生了巨大变化。GUI 的主要特点是桌面隐喻、WIMP技术、直接操纵和“所见即所得”。
    • 与命令行界面相比,图形用户界面的人机交互自然性和效率都有较大的提高。图形用户界面很大程度上依赖于菜单选择和交互小组件(Widget)。
    • 图形用户界面给有经验的用户造成不方便,他们有时倾向使用命令键而不是选择菜单,且在输入信息时用户只能使用“手”这一种输入通道。
    • 图形用户界面需要占用较多的屏幕空间,并且难以表达和支持非空间性的抽象信息的交互。
  • 自然和谐的人机交互阶段
    • 用人的多种感觉通道和动作通道(如语音、手写、姿势、视线、表情等输入),以并行、非精确的方式与(可见或不可见的)计算机环境进行交互,使人们从传统的交互方式的束缚解脱出来,进入自然和谐的人机交互时期。这一时期的主要研究内容包括多通道交互、情感计算、虚拟现实、智能用户界面、自然语言理解等方面。

2、主要人机交互设备及其主要原理

输入设备

文本输入设备

文本输入是人与计算机交互的一个重要组成部分,同时也是一项繁重的工作。键盘输入是最常见、最主要的文本输入方式,手写以及语音等一些更自然的交互方式也可为文本输入提供辅助手段。

键盘

主要原理:键盘的每个按键对应一个编码,当用户按下一个按键时,导电塑胶将线路板上的这个按键的排线接通,键盘中的编码器能够迅速将此按键所对应的编码通过接口电路输送到计算机的键盘缓冲器中,由计算机识别处理。

手写输入设备
手写笔
  1. 有线笔
  2. 无线笔
  1. 手写笔一般还带有两个或三个按键,其功能相当于鼠标按键,这样在操作时不需要在手写笔和鼠标之间来回切换。
手写板
  1. 电阻式压力手写板:几乎已经被淘汰;
  1. 电磁式感应手写板:目前市场主流产品;
  1. 电容式触控手写板:市场的新生力量,具有耐磨损、使用简便、敏感度高等优点,是今后手写板的发展趋势。

评测指标:压感级数;精度;书写面积

手写汉字识别软件

除了硬件外,手写笔和手写板的另一项核心技术是手写汉字识别软件,目前各类手写笔的识别技术都已相当成熟,识别率和识别速度也能够满足实际应用的要求。

图像输入设备

图像输入是人与计算机交互的另外一个重要组成部分;扫描仪可以快速地实现图像输入,且经过对图像的分析与识别,可以得到文字、图形等内容;而摄像头则是捕捉动态场景最常用的工具。

二维扫描仪

二维扫描仪作为光电、机械一体化的高科技产品,自问世以来凭借其独特的数字化“图像”采集能力,低廉的价格以及优良的性能,得到了迅速的发展和广泛的应用,目前已成为计算机不可缺少的图文输入工具之一,被广泛地应用于图形、图像处理的各个领域。

性能指标:分辨率;扫描速度。扫描速度决定了扫描仪的工作效率,分辨率决定了最高扫描精度

数字摄像头

摄像头作为一种视频输入设备,被广泛应用在视频聊天、实时监控等方面

数字摄像头可以直接捕捉影像,然后通过计算机的串口、并口或者USB接口传送到计算机里;没有存储装置和其他附加控制装置,只有一个感光部件、简单的镜头和不太复杂的数据传输线路,造价低廉衡量因素:感光元器件;像素数;解析度;视频速度;镜头

三维信息输入设备

在许多领域,如机器视觉、面形检测、实物仿形、自动加工、产品质量控制、生物医学等,物体的三维信息必不可少的。三维扫描仪是实现三维信息数字化的一种极为有效的工具。动作捕捉设备则用于捕捉用户的肢体甚至是表情动作,生成运动模型,在影视、动漫制作中已被大量应用。

三维扫描仪
  1. 接触式

主要原理:采用探测头直接接触物体表面,通过探测头反馈回来的光电信号转换为物体表面形状的 数字信息。

主要以三维坐标测量机为代表。其优点是具有较高的准确性和可靠性,但也存在测量速度慢、费用较高、探头易磨损以及误差修正等缺点。

  1. 非接触式:主要有三维激光扫描仪,照相式三维扫描仪等,分别是基于激光扫描测量和结构光扫描测量等技术设计的。这类设备的优点是扫描速度快,易于操作,且由于不需接触被测量的物体,所以对物体表面损伤少等。

三维激光扫描仪

通过高速激光扫描测量技术,获取被测对象表面的空间坐标数据。

动作捕捉设备
  1. 机械式

主要原理:利用可伸缩的机械结构安装于捕捉物体上,以取得各部分的运动量。

优点是成本低廉,但这种方式限制了运动物体的自由运动,且由于机械设备的尺寸、重量等问题,因而限制了其应用范围。

  1. 电磁式

主要原理:将若干低频磁场感应器安装在捕捉物体上,根据感应器接收到的磁场,可以计算出接收器相对于发射器的位置和方向。

由于易受电磁干扰影响到了捕捉数据的精度和稳定性,对于作业场地的要求也非常严格。

  1. 光学式

主要原理:利用计算机视觉原理。从理论上说,对于空间中的一个点,只要它能同时为两部摄相机所见,则根据同一时刻两部摄相机所拍摄的图像和对应参数,就可以确定这一时刻该点在空间的位置。摄相机以足够高的速率连续拍摄时,从图像序列中就可以得到该点的运动轨迹。光学式运动捕捉便是利用这一点通过对目标上特定光点的监视和跟踪来完成运动捕捉的任务。

体感输入设备

体感输入设备与光学式动作捕捉设备的基本原理与应用类似,而体感输入设备牺牲了一定的捕捉精度,但可以更简易、快捷的实现动作捕捉,支持用户通过肢体动作控制计算机应用,例如体感游戏。

指点输入设备

指点设备常用于完成一些定位和选择物体的交互任务。物体可能处于一维、二维、三维或更高维的空间中,而选择与定位的方式可以是直接选择,或通过操作屏幕上的光标来完成。

鼠标及控制杆

鼠标分类:

  1. 机械式鼠标(半光学鼠标)
  1. 光电式鼠标

控制杆分类:

  1. 位移定位
  2. 压力定位
触摸屏
  1. 电阻式触摸屏
  2. 电容式触摸屏
  3. 基于光学原理的多点触摸屏

输出设备

光栅显示器

光栅显示器是计算机的重要输出设备,是人机对话的重要工具。它的主要功能是接收主机发出的信息,经过一系列的变换,最后以光的形式将文字和图形显示出来。

投影仪

投影仪,又称投影机,是一种可以将数字图像或视频投射到幕布上的设备。

根据投影仪的工作方式不同,主要分为CRT型LCD型DLP(数字光处理)型三种不同类型的投影仪,而其中LCD投影仪与DLP投影仪又是目前商用投影仪中的主流

1.CRT三枪投影仪

2.LCD投影仪

3.DLP投影仪

打印机

打印机是目前非常通用的一种输出设备,其结构可分为机械装置和控制电路两部分。常见的有针式、喷墨、激光打印机三类。

重要指标:打印分辨率、速度、幅面、最大打印能力。

3D打印机

3D打印机又称三维打印机,它以数字模型文件为输入,运用特殊蜡材、粉末状金属或塑料等可粘合材料,通过打印一层层的粘合材料来制造三维的物体。分为喷墨式,熔积成型,激光烧结三种类型。

3D打印机与传统打印机最大的区别在于它使用的“墨水”是实实在在的原材料,可用于打印的介质种类多样,从繁多的塑料到金属、陶瓷以及橡胶类物质。

1.“喷墨”式3D打印机

2.“熔积成型”3D打印机

3.“激光烧结”3D打印机

语音交互设备

人们可以使用固定电话或移动电话以及PC、PDA和其它智能设备通过语音识别、语音合成等交互技术,以及语音浏览、智能信息处理技术等实现访问互联网,实现个人服务和商业服务的语音应用。在美国、日本,语音互联已成为简易终端接入互联网的主要方式之一。对于语音的交互,耳机、麦克风以及声卡是最基本的设备。

耳麦

1. 耳机

常见的耳机技术指标有耳机结构、频响范围、灵敏度、阻抗、谐波失真

耳机结构:可分为封闭式、开放式、半开放式三种

频响范围:频响范围应当能够包括50Hz到12500Hz之间

灵敏度:在同样响度的情况下,需要输入功率的大小,灵敏度越高所需要的输入功率越小

阻抗:耳机交流阻抗的简称

谐波失真:是一种波形失真,在耳机指标中有标示,失真越小,音质也就越好。一般的耳机应当小于或略等于0.5%

2. 麦克风

耳机佩戴有麦克风。为了过滤背景杂音,达到更好的识别效果,许多麦克风采用了NCAT(Noise Canceling Amplification Technology)专利技术NCAT技术结合特殊机构及电子回路设计以达到消除背景噪音,强化单一方向声音(只从配戴者嘴部方向)的收录效果,是专为各种语音识别和语音交互软件设计的,提供精确音频输入的技术

声音合成设备—声卡

1. 功能

是一种安装在计算机中的最基本的声音合成设备,是实现声波/数字信号相互转换的硬件,可把来自话筒、磁带、光盘的原始声音信号加以转换,输出到耳机、扬声器、扩音机、录音机等声响设备,完成对声音信息进行录制与回放

2. 结构

模数转换电路:负责将麦克风等声音输入设备采集到的模拟声音信号转换为计算机能处理的数字信号

数模转换电路:负责将计算机使用的数字声音信号转换为耳机、音箱等设备能使用的模拟信号

虚拟现实交互设备

虚拟现实系统要求计算机可以实时显示一个三维场景,用户可以在其中自由的漫游,并能操纵虚拟世界中一些虚拟物体。因此,除了一些传统的控制和显示设备,虚拟现实系统还需要一些特殊的设备和交互手段,来满足虚拟系统中的显示、漫游以及物体操纵等任务

三维空间定位设备
空间跟踪定位器

主要的性能指标

1. 定位精度:指传感器所测出的位置与实际位置的差异

2. 位置修改速率:指传感器在一秒钟内所能完成的测量次数

3. 延时:指被检测物体的某个动作与传感器测出该动作时间的间隔

数据手套
触觉和力反馈器
三维显示设备
立体视觉

立体影像显示技术主要有两种:

1. 主动式立体模式:用户的左右眼影像将按照顺序交替显示,用户使用LCD立体眼镜保持与立体影像的同步,这种模式可以产生高质量的立体效果;

2. 被动式立体系统:需要使用两套显示设备以及投影设备分别生成左右眼影像并进行投影,不同的投影分别使用不同角度的偏振光来区别左右眼影像,用户使用偏振光眼镜保持立体影像的同步

头盔式显示器(Head Mounted Display,HMD)是一种立体图形显示设备,可单独与主机相连以接受来自主机的三维虚拟现实场景信息

  1. 单通道的头盔显示器
  2. 双通道的头盔显示器
  3. 头盔式显示器使用方式为头戴式,辅以空间跟踪定位器可进行虚拟场景输出效果的观察,同时观察者可做空间上的移动,如自由行走、旋转等

洞穴式显示环境(Cave Automatic Virtual Environment,CAVE)是一种四面的沉浸式虚拟现实环境

1. 对于处在系统内的用户来说,投影屏幕将分别覆盖用户的正面、左右以及底面视野,构成一个边长为10英尺的立方体

2. 允许用户在虚拟空间中走动,而不用佩戴笨重的设备

3. 允许在同一个环境中存在多个用户,而且用户间可以自然地交互

4. 一次能显示大型模型,如汽车、房屋等,而HMD则需要头部运动才能看到完整的模型

投影拼接融合的沉浸式显示环境

裸眼立体显示设备

3、行为模型、结构模型的主要研究内容及其特点,掌握模型的相互转换

主要从用户和任务的角度考虑如何来描述人机交互界面

行为模型

主要研究内容

分析人员获取用户需求后,结合领域专家的意见和指导获取系统中需要完成的任务,对任务的主要因素进行详细地分析,如任务的层次发生条件完成的方法以及它们之间的关系等。

特点是注重用户行为和需求的实际调研和分析,强调从用户的角度出发,以用户为中心进行设计。

GOMS

通过目标 (Goal)、操作 (Operator)、方法 (Method) 以及选择规则 (Selection) 四个元素来描述用户的行为。是在交互系统中用来分析建立用户行为的模型。它采用“分而治之”的思想,将一个任务进行多层次的细化。

  1. 目标:用户执行任务最终想要得到的结果,它可以在不同的层次中进行定义
  2. 操作:任务分析到最低层时的行为,是用户为了完成任务所必须执行的基本动作
  3. 方法:描述如何完成目标的过程。一个方法本质上来说是内部的算法,用来确定子目标序列及完成目标所需要的操作
  4. 选择规则:用户要遵守的判定规则,以确定在特定环境下所要使用的方法。当有多个方法可供选择时,GOMS中并不认为这是一个随机的选择,而是尽量来预测会使用哪个方法,这需要根据特定用户、系统的状态、目标的细节来预测要选择哪种方法作为一种人机交互界面表示的理论模型,GOMS是人机交互研究领域内少有的几个广为人知的模型之一,并被称为最成熟的工程典范,该模型在计算机系统的评估方面也有广泛的应用

局限性:

① 没有清楚的描述错误处理的过程,假设用户完全按一种正确的方式进行人机交互,因此只针对那些不犯任何错误的专家用户;

② 对于任务之间的关系描述过于简单,只有顺序和选择另外选择关系通过非形式化的附加规则描述,实现起来也比较困难;

③ 把所有的任务都看作是面向操作目标的,而忽略了一些任务所要解决的问题本质以及用户间的个体差异。

LOTOS

LOTOS算符 ★

T1 ||| T2(交替 Interleaving)

T1 和 T2两个任务相互独立执行,可按任意顺序执行,但永远不会同步。

T1 [] T2(选择 Choice)

需要在 T1,T2 中选择一个执行,一旦选择某一个后,必须执行它直到结束,在这中间另一个再无执行机会。

T1 | [a1,...,an] | T2(同步 Synchronization)

任务 T1,T2 必须在动作(a1,……,an)处保持同步 。

T1 [> T2(禁止 Deactivation)

一旦 T2 任务被执行,T1 便无效(不活动)。

T1 >> T2(允许 Enabling)

当 T1 成功结束后才允许 T2 执行 。

中国象棋的LOTOS图形描述:

LOTOS与GOMS的结合

LOTOS模型很好的描述了任务之间的时序约束关系,这些时序约束关系能更好的描述GOMS中子目标之间的关系。

用GOMS模型描述任务的分解过程,而用LOTOS给出子任务之间的约束关系,这样就可以增加两种表示模型的表示能力。

UAN

一种简单的符号语言,主要描述用户的行为序列以及在执行任务时所用的界面物理对象。 尽管UAN属

于一种行为模型,但作为一种任务描述语言,它又涉及一定程度的系统行为的描述,因而它兼有行为模

型和结构模型的一些特点。

采用一种表格结构来表示任务:

结构模型

主要从系统的角度来表示人机交互界面。重点介绍状态转换网络(STN-State Transition Network)和

产生式规则 (Production Rule)

结构模型主要研究人机交互系统的结构和设计原理,包括系统的组成、各部分之间的关系、系统的运行机制等。

特点是注重系统的结构设计和运行机制,强调从系统的角度出发,以任务和功能为中心进行设计。

行为模型和结构模型的转换 ★

4、能够根据案例分析某软件结构的行为模型或结构模型

5、掌握图形用户界面的基本原则

图形用户界面主要思想

桌面隐喻

  • 桌面隐喻是指在用户界面中用人们熟悉的桌面上的图例清楚地表示计算机可以处理的能力。

所见即所得

  • 在WYSIWYG交互界面中,其所显示的用户交互行为与应用程序最终产生的结果是一致的。

直接操纵

  • 直接操纵是指可以把操作的对象、属性、关系显式地表示出来,用光笔、鼠标、触摸屏或数据手套等指点设备直接从屏幕上获取形象化命令与数据的过程

图形用户界面设计一般原则

  • 界面要具有一致性
  • 常用操作要有快捷方式
  • 提供必要的错误处理功能
  • 提供信息反馈
  • 允许操作可逆
  • 设计良好的联机帮助
  • 合理划分并高效地使用显示屏幕

6、掌握移动互联网设计的基本原则及其特点

基本原则 ★

  • 了解用户
  • 了解目标平台
  • 简单直观
  • 个性化设计
  • 易于检索采用一致的界面风格
  • 避免不必要的文本输入
  • 根据用户的要求使服务个性化
  • 最大限度地避免用户出错
  • 文本信息应当本地化
  • 进行用户测试

特点 ★

1. 移动互联网的数据接入方式是影响移动界面设计的一个重要因素,目前也是多种标准并存,主要形式包括无线局域网(Wireless Local Area Network,WLAN)、无线城域网(Wireless Metropolitan Area Network,WMAN)、无线个域网(Wireless Personal Area Networks,WPAN)、高速无线广域网(Wireless Wide Area Networks,WWAN)以及卫星通讯等。

2. 移动设备种类繁多,其相应的输入方式也相当复杂。特别是对于目前主要的移动设备形式—智能手机与掌上电脑而言,由于尺寸较小、接口较为简单,全尺寸键盘、鼠标等诸多的传统的输入输出设备较难在移动界面中使用,因此需要设计专门的输入输出方式,以适应移动界面的特点

Web界面设计原则

  1. 以用户为中心
  2. 一致性
  3. 简洁与明确
  4. 体现特色
  5. 兼顾不同的浏览器
  6. 明确的导航设计

移动界面设计的原则

  1. 简单直观
  2. 个性化设计
  3. 易于检索
  4. 界面风格一致
  5. 避免不必要的文本输入
  6. 根据用户的要求使服务个性化
  7. 最大限度地避免用户出错
  8. 文本信息应当本地化

7、掌握几种基本的软件体系结构

8、熟悉LOTOS的几种关系及其语法

LOTOS算符 ★

T1 ||| T2(交替 Interleaving)

T1 和 T2两个任务相互独立执行,可按任意顺序执行,但永远不会同步。

T1 [] T2(选择 Choice)

需要在 T1,T2 中选择一个执行,一旦选择某一个后,必须执行它直到结束,在这中间另一个再无执行机会。

T1 | [a1,...,an] | T2(同步 Synchronization)

任务 T1,T2 必须在动作(a1,……,an)处保持同步 。

T1 [> T2(禁止 Deactivation)

一旦 T2 任务被执行,T1 便无效(不活动)。

T1 >> T2(允许 Enabling)

当 T1 成功结束后才允许 T2 执行 。

中国象棋的LOTOS图形描述:

9、什么是可用性及其可用性的基本原则

定义 ★

指特定的用户在特定环境下使用产品并达到特定目标的效力、效率和满意的程度。

可用性并不仅仅与用户界面相关,而是蕴含更广泛的内涵,可以从五个方面去理解,这五个方面集中反映了用户对产品的需求:

  • 有效性(Effective)
  • 效率(Efficient)
  • 吸引力(Engaging)
  • 容错能力(Error Tolerant)
  • 易于学习(Easy to Learn)

基本原则 ★

1. 可学习性

可学习性是指交互系统能否让新手学会如何使用系统,以及如何达到最佳交互效能。支持可学习性的原则包括:可预见性、同步性、熟悉性、通用性、一致性

2. 灵活性

灵活性体现了用户与系统交流信息方式的多样性。有下列几种原则:可定制性、对话主动性、多线程、可互换性、可替换性

3. 鲁棒性

用户使用计算机的目的是达到某种目标,能不能成功地达到目标和能不能对到达的目标进行评估就体现为交互的鲁棒性。包括:可观察性、可恢复性、响应性、任务规范性

10、案例综合分析

11、消息循环机制

消息:在了解什么是消息先来了解什么是事件。事件可分为几种,由输入设备触发的,比如鼠标键盘等等。由窗体控件触发的,比如button控件,file菜单等。还有就是来自Windows内部的事件。这三种称为事件。而消息,是由事件翻译而来的。事件产生消息。

从数据结构角度来讲,消息是一种结构体。结构如下:

typedef struct tagMSG
{

	HWND hwnd;  //窗口句柄。

	UINT message;//消息类型。

	WPARAM wParam;//32位附加信息。

	LPARAM lParam;//32位附加信息。

	DWORD time;//消息发送时间。

	POINT pt;//消息发送时,鼠标所在位置。

}MSG;   

消息队列消息队列有两种,分为系统消息队列和应用程序消息队列产生的消息首先由Windows系统捕获,放在系统消息队列,再拷贝到对应的应用程序消息队列。32/64位系统为每一个应用程序维护一个消息队列

消息循环:系统为每个应用程序维护一个消息循环,消息循环会不断检索自身的消息队列。每有一个消息,就用GetMessage()取出消息。

while(GetMessage (&msg, NULL, 0, 0))//Windows消息循环。
{
     TranslateMessage (&msg) ;//翻译消息,如按键消息,翻译为WM_CHAR
     DispatchMessage (&msg) ;//分发消息到对应窗口
}

GetMessage具有阻塞机制。当消息队列中没有消息时,程序非忙等,而是让权等待。当收到WM_QUIT时,GetMessage返回false,循环停止,同时应用程序终止。

以上简要地介绍了消息队列,消息循环与消息处理的概念。

Windows的应用程序靠消息驱动来实现功能。而消息驱动靠消息机制来处理。消息机制就是由消息队列,消息循环,消息处理构成的。

那么,消息机制是如何运作的呢?

当用户运行一个应用程序,通过对鼠标的点击或键盘按键,产生一些特定事件。由于Windows一直监控着I/O设备,该事件首先会被翻译成消息,由系统捕获,存放于系统消息队列。经分析,Windows知道该消息应由那个应用程序处理,则拷贝到相应的应用程序消息队列。由于消息循环不断检索自身的消息队列,当发现应用程序消息队列里有消息,就用GetMessage()取出消息,封装成Msg()结构。如果该消息是由键盘按键产生的,用TranslateMessage()翻译为WM_CHAR消息,否则,用DisPatchMessage()将取出的消息分发到相应的应用程序窗口,交由窗口处理程序处理。Windows为每个窗体预留了过程窗口函数,该函数是一个回调函数,由系统调用,应用程序不能调用。程序员可以通过重载该函数处理我们”感兴趣”的消息。对于不感兴趣的消息,则由系统默认的窗口过程处理程序做出处理。

下面看这么一张图:

这张图很好地解释了消息机制的运行原理。

当运行程序->事件操作引发消息->消息先存在系统消息队列->再存入到应用程序消息队列->用消息循环提取消息->处理消息->再返回消息队列....

while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
}

上面代码的执行过程为:
1. 消息循环调用GetMessage()从消息队列中查找消息进行处理,如果消息队列为空,程序将停止执行并等待(程序阻塞)。
2. 事件发生时导致一个消息加入到消息队列(例如系统注册了一个鼠标点击事件),GetMessage()将返回一个正值,这表明有消息需要被处理,并且消息已经填充到传入的MSG参数中;当传入WM_QUIT消息时返回0;如果返回值为负表明发生了错误。
3. 取出消息(在Msg变量中)并将其传递给TranslateMessage()函数,这个函数做一些额外的处理:将虚拟键值信息转换为字符信息。这一步实际上是可选的,但有些地方需要用到这一步。
4. 上面的步骤执行完后,将消息传递给DispatchMessage()函数。DispatchMessage()函数将消息分发到消息的目标窗口,并且查找目标窗口过程函数,给窗口过程函数传递窗口句柄、消息、wParam、lParam等参数然后调用该函数。
5. 在窗口过程函数中,检查消息和其他参数,你可以用它来实现你想要的操作。如果不想处理某些特殊的消息,你应该总是调用DefWindowProc()函数,系统将按按默认的方式处理这些消息(通常认为是不做任何操作)。
6. 一旦一个消息处理完成,窗口过程函数返回,DispatchMessage()函数返回,继续循环处理下一个消息。

12、操作系统发展历史及发展趋势

操作系统图形界面发展历史可以简述为以下几个阶段:

  1. 起源:1973年,施乐帕洛阿尔托研究中心开发出Alto,这是第一个使用图形用户界面的操作系统。
  2. 商业应用:1981年,施乐推出Star系统,这是Alto的商用版本。1983年,苹果公司发布Lisa电脑,这是第一款个人电脑搭载图形用户界面。1984年,苹果公司发布Macintosh,这是第一款成功的商业化的图形用户界面电脑。
  3. 主流操作系统支持:随着Windows 3.1、Windows 95等操作系统的发布,图形界面逐渐成为主流。
  4. 移动设备普及:随着移动互联网的发展,移动设备上的操作系统也更加注重用户体验和便捷性。

以上信息仅供参考,如有需要,建议查阅操作系统相关书籍。

操作系统的发展历史可以大致分为以下几个阶段:

  1. 手工操作阶段:在第一台计算机诞生的初期,没有出现操作系统,工作采用手工操作方式。程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行。这种方式的缺点是用户独占全机,不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低,CPU的利用不充分。
  2. 批处理系统:为了提高资源利用率和增强计算机系统性能,人们开发了批处理系统。批处理系统一次性输入数个程序及数据,然后会输出到指定编号的打印机上。这解决了手工操作慢速度和计算机的高速度之间的尖锐矛盾,但仍然存在IO阻塞问题,如果一个作业因为等待IO而阻塞,那么整个系统的其他作业都需要等待,资源利用率仍然不高。
  3. 联机批处理系统:联机批处理系统提高了CPU利用率,当一个作业因为等待IO而阻塞时,CPU可以转去执行其他作业,提高了资源利用率。
  4. 多道程序设计:随着技术的发展,出现了多道程序设计,即批处理遇到IO阻塞交出cpu权限。这提高了CPU利用率(操作系统发展,有切换作业功能),但因为没有独享内存,并且还是批处理机制(若其中一个发生异常,整体的输出时间会变得很长,并且内存共享,调试困难)。
  5. 分时操作系统:分时操作系统(多个联机终端+共享CPU共享内存)刚出来的时候没有流行开来是因为各个用户内存分不开来,分割内存从软件上无法实现,直到硬件上实行了分割内存后才流行开来。

以上是操作系统的发展历史中的一些重要阶段。随着技术的不断进步,操作系统也将会持续发展创新。

操作系统图形界面发展史(1981-2009)

PC机上的第一个图形界面——Xerox Alto(该系统并未商用,主要用于研究和大学),其于1973年被施乐公司Xerox Palo Alto Research Center (PARC)所 设计,从此,开启了计算机图形界面的新纪元。

1981-1985

Xerox 8010 Star (released in 1981)

这是第一个完整地集成了桌面和应用程序以及图形界面的操作系统,人们一开始叫它“Xerox Star”,然后又叫“ViewPoint”,再以后又叫作“GlobalView”。

Apple Lisa Office System 1 (released in 1983)

这个操作系统也叫Lisa OS,这里的OS是Office System的缩写。它由Apple公司开发主要目的用于文档处理工作站。不幸的是,这款机器的寿命并不长,最终这个工作站被更便宜的Apple的 Macintosh操作系统所取代。Lisa OS 几个升级包括 1983年的 Lisa OS2, 1984年的 Lisa OS 7/7 3.1。

VisiCorp Visi On (released in 1984)

下面是IBM PC上的第一个图形界面的操作系统,叫Visi,其主要是给大公司用的,当然其价格也是非常高昂的。这个图形界面使用了鼠标,内置的安装程序以及帮助文档,但没有使用icon。

Mac OS System 1.0 (released in 1984)

Mac OS System 1.0是第一个划时代的图形界面,因为它其中的很多技术到今天还在使用。比如,基于窗口用图标的UI,窗口可以被鼠标移动,可以使用鼠标拖动文件和目录以完成文件的copy和move。

Amiga Workbench 1.0 (released in 1985)

Amiga在第一次release出来是超前的,它支持背景色的更换四色:黑,白,蓝,橙),原始的多任务处理,还有立体声,以及多状态的图标(选中和未选中)。

Windows 1.0x (released in 1985)

微软作为一个图形界面的狂热者,在图形界面上的有着执着的热情,1985年,微软终于在图形用户界面大潮中占据了一席之地,Windows 1.0 是其第一款基于 GUI 的操作系统 。使用了 32×32 像素的图标以及彩色图形,其最有趣的功能是模拟时钟动画图标。

1986 1990

IRIX 3 (released in 1986, first release 1984)

64位的IRIX操作系统源自UNIX。它的一个有趣功能是支持矢量图标,这个功能远在 Max OS X 面世前就出现了。下面是截图(看起来,比Windows成熟了太多了)

Windows 2.0x (released in 1987)

Windows在这个版本有重大的改进。比如窗口可以重叠,可以改变大小,可以最大化和最小化。

OS/2 1.x (released in 1988)

OS/2 版本1.x本来是IBM和Microsoft一起开发的,但是1991年两个公司分道扬镳,微软做自己的windows去了,而IBM继续OS/2的开发,这个操作系统的GUI又被叫作“Presentation Manager”,这个版本的OS/2只支持很单一的色调和不能移动的图标。

NeXTSTEP / OPENSTEP 1.0 (released in 1989)

Steve Jobs 想给大学或研究实验室做一个完美的Research电脑,于是这个想法促成了NeXT Computer Inc.在1989年的时候release了 NeXTSTEP 1.0 GUI,在后来它被改名为:OPENSTEP。

该 GUI 的图标很大,48×48像素,包含更多颜色,一开始是单色的,从1.0开始支持彩色,下图中已经可以看到现代 GUI 的影子。

OS/2 1.20 (released in 1989)

接下来,OS/2升级成了1.20,我们可以看到,图标和窗口变得好看了许多,图标看上去更好看,窗体也显得更平滑。(是不是很像Windows 3.2?)

Windows 3.0 (released in 1990)

自从微软和IBM分开后,微软就意识到图形界面对用户的体验会是一个很不错东西,于是他们开始了有意义的改进。操作系统支持386 扩展模式,也就是说可以使用除了640K更多的内存和硬盘空间。并且有能力有更好的显示,如Super VGA 800×600 和 1024×768.

此时,Microsoft 雇佣了 Susan Kare ,她设计了Windows 3.0 的图标并统一了图形界面的风格。

1991 1995

Amiga Workbench 2.04 (released in 1991)

看来,Amiga Workbench有了很多的改进,该版 GUI 包含很多改进,桌面可以垂直分割成不同分辨率和颜色深度,在现在看来似乎有些奇怪。默认的分辨率是 640×256,不过硬件支持更高的分辨率。但感觉还是土了点。

Mac OS System 7 (released in 1991)

Mac OS version 7.0 是第一个支持彩色Mac OS GUI ,还有阴影。

Windows 3.1 (released in 1992)

这个版本的 Windows 引入了TrueType 字体,第一次使 Windows 成为可以用于印刷的系统。整个界面有非常大的改善,Windows 3.0 中,只能通过 Adobe 字体管理器(ATM)实现该功能。该版本同时包含一个叫做 Hotdog Stand 的配色主题。并且配色还能够照顾有色盲症的人。

OS/2 2.0 (released in 1992)

这是第一个被提交到互联网上接受可用性与可访问性测试的GUI,整个GUI使用了面向对象的方法设计,每个文件和文件夹都是一个对象,可以同别的文件,文件夹与应用程序关联。它同时支持拖放式操作以及模板功能。看上去已是很不错了。

Windows 95 (released in 1995)

Windows 3.x 之后,微软对整个GUI被完全重新设计,这是第一个在每个窗口上加上了关闭按钮的GUI。设计团队让图标有了几个状态 (enabled, disabled, selected, checked, etc.) 这也是最著名的“开始”按钮第一次出现的时候。这是Microsoft历史上最大的一步,从此走上了帝国之路。

1996 2000

OS/2 Warp 4 (released in 1996)

IBM 终于争气地推出了 OS/2 Warp 4。桌面上可以放置图标,也可以自己创建文件和文件夹,并推出一个类似 Windows 回收站和 Mac 垃圾箱的文件销毁器,不过一旦放进去进不能再恢复。各个操作系统的图形界面开始越来越相似了。都是icons,窗口,垃圾回收站,等等,大同小异了。

Mac OS System 8 (released in 1997)

该版本的 GUI 支持默认的256色图标,Mac OS 8 最早采用了伪3D图标,其灰蓝色彩主题后来成为 Mac OS GUI 的标志。

Windows 98 (released in 1998)

图标风格和 Windows 95 几无二致,不过颜色支持得更多了。支持超过了256色的图标。第一次出现了“Active Desktop”,桌面和IE集成,开始了internet的全面集成。

KDE 1.0 (released in 1998)

KDE是 Linux 的一个统一图形用户界面环境。

GNOME 1.0 (released in 1999)

Red Hat Linux发行版开发的GUI,GNOME后来也被别的 Linux 采用。

2001 2005

Mac OS X (released in 2001)

2000年初,苹果宣布推出其 Aqua 界面,2001年,推出全新的操作系统 Mac OS X。默认的 32×32, 48×48 被更大的 128×128 平滑半透明图标代替。该 GUI 一经推出立即招致大量批评,似乎用户都如此大的变化还不习惯,不过没过多久,大家就接受了这种新风格,如今这种风格已经成了 Mac OS 的招牌。

Windows XP (released in 2001)

每一次微软推出重要的操作系统版本,其 GUI 也必定有巨大的改变,Windows XP 也不例外,这个 GUI 支持皮肤,用户可以改变整个 GUI 的外观与风格,默认图标为 48×48,支持上百万颜色。

KDE 3 (released in 2002)

自从KDE 1.0以来,K Desktop Enviornment 改善地非常地快也非常的迅猛。其对所有图形和图标进行了改进并统一了用户体验。

2007 2009

Windows Vista (released in 2007)

开始3D桌面了。这是微软向其竞争对手做出的一个挑战,Vista 中同样包含很多 3D 和动画,自 Windows 98 以来,微软一直尝试改进桌面,在 Vista 中,他们使用类似饰件的机制替换了活动桌面。不过Linux下的3D桌面可更为夸张。

Mac OS X Leopard (released in 2007)

这是第6代的Mac OS桌面系统,也是一样,引入了更好的3D元素。还有大量的动画。

KDE (v4.0 Jan. 2009, v4.2 Mar. 2009)

KDE 4 的 GUI 提供了很多新改观,如动画的,平滑的,有效的窗体管理,图标尺寸可以很容易调整,几乎任何设计元素都可以轻松配置。相对前面的版本绝对是一个巨大的改进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/428397.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

埃隆・马斯克46页文件起诉OpenAI违反成立初衷:一场涉及通用人工智能未来的法律纠纷

近日,科技界的重量级人物埃隆・马斯克对十年前他参与创立的生成式人工智能公司OpenAI提起诉讼,引发了广泛关注。马斯克指控OpenAI违反了他们之间的合同,并提出了一系列引人注目的言论,包括指责OpenAI将GPT-4称为通用人工智能&…

C# Onnx segment-anything 分割万物 一键抠图

目录 介绍 效果 模型信息 sam_vit_b_decoder.onnx sam_vit_b_encoder.onnx 项目 代码 下载 C# Onnx segment-anything 分割万物 一键抠图 介绍 github地址:https://github.com/facebookresearch/segment-anything The repository provides code for runn…

光伏储能MPPT控制系统如何进行浪涌静电保护?

MPPT(Maximum Power Point Tracking)是太阳能电池板光伏发电系统中重要的一种控制技术。MPPT控制器能够实时侦测太阳能板的发电电压,并追踪最高电压电流值(VI),使系统以最大功率输出对蓄电池充电&#xff0…

libswift_Concurrency.dylib (which was built for iOS 13.0)

app启动时崩溃:libswift_Concurrency.dylib (which was built for iOS 13.0) ios真机系统版本过低

AI技术初探:普通人ALL IN AI入门指南

自从去年ChatGPT如流星划过夜空,照亮了整个AI领域,它所带来的技术革新与热潮仿佛一场无声的暴风雨,席卷了全球的科技圈。身为一名低阶IT从业者,感觉这太高大上了,与我的工作有毛线关系。 但是,AI技术的飞速…

数据库学习案例20240304-mysql数据库案例总结(碎片,统计信息)

1 表中的碎片 在InnoDB中删除行的时候,这些行只是被标记为“已删除”,而不是真正从物理存储上进行了删除,因而存储空间也没有真正被释放回收。InnoDB的Purge线程会异步地来清理这些没用的索引键和行。但是依然没有把这些释放出来的空间还给操…

pydub、playsound播放声音;gradio、streamlit页面播放声音;gradio 页面图像、视频及调用摄像头

1、pydub from pydub import AudioSegment from pydub.playback import playsong AudioSegment.from_wav(r"C:\Users\loong\Downloads\zh.wav") play(song)2、playsound from playsound import playsoundplaysound(r"voice.wav")3、streamlit import s…

李沐动手学习深度学习——3.5练习

减少batch_size(如减少到1)是否会影响读取性能? 肯定会影响,计算机io性能而言,随着batch_size增大,读取越来越快,需要的时间越少。这里会涉及到计算机操作系统的知识点,内存与硬盘之…

牛客网C++专项题目整理(1)

1. 若有定义语句:char s[3][10],(*k)[3],*p;则以下赋值语句错误的是 1.p s; 2.p k; 3.p s[0]; 4.k s; 答案:124 char s[3][10] s 是数组指针,类型为char (*)[3],所指向的每个数组长度为10; char (*k)[3] k是一个数组指针&a…

C/C++ 乘积尾零问题(蓝桥杯)

如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650,4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 1173 6866 3397 4759 7557 3070 2287 1453 9899…

MySQL数据库运维第一篇(日志与主从复制)

文章目录 一、错误日志二、二进制日志三、查询日志四、慢查询日志(记录超时的sql语句)五、主从复制概括六、主从复制原理七、搭建主从复制八、主从复制的测试 在这篇深入的技术文章中,作者将以明晰透彻的方式详细介绍MySQL数据库中关键的日志…

蓝桥杯——123

123 二分等差数列求和前缀和数组 题目分析 连续一段的和我们想到了前缀和,但是这里的l和r的范围为1e12,明显不能用O(n)的时间复杂度去求前缀和。那么我们开始观察序列的特点,可以按照等差数列对序列进行分块。如上图,在求前10个…

C++基于多设计模式下的同步异步日志系统day5

C基于多设计模式下的同步&异步日志系统day5 📟作者主页:慢热的陕西人 🌴专栏链接:C基于多设计模式下的同步&异步日志系统 📣欢迎各位大佬👍点赞🔥关注🚓收藏,&am…

【Vue3】3-6 : 仿ElementPlus框架的el-button按钮组件实

文章目录 前言 本节内容实现需求完整代码如下: 前言 上节,我们学习了 slot插槽,组件内容的分发处理 本节内容 本小节利用前面学习的组件通信知识,来完成一个仿Element Plus框架的el-button按钮组件实现。 仿造的地址:uhttps://…

SpringBoot接口防抖(防重复提交)的一些实现方案

前言 啥是防抖 思路解析 分布式部署下如何做接口防抖? 具体实现 请求锁 唯一key生成 重复提交判断 前言 作为一名老码农,在开发后端Java业务系统,包括各种管理后台和小程序等。在这些项目中,我设计过单/多租户体系系统&a…

2024最新算法:鹦鹉优化算法(Parrot optimizer,PO)求解23个基准函数

一、鹦鹉优化算法 鹦鹉优化算法(Parrot optimizer,PO)由Junbo Lian等人于2024年提出的一种高效的元启发式算法,该算法从驯养的鹦鹉中观察到的觅食、停留、交流和对陌生人行为的恐惧中汲取灵感。这些行为被封装在四个不同的公式中…

《Improving Calibration for Long-Tailed Recognition》阅读笔记

论文标题 《Improving Calibration for Long-Tailed Recognition》 改进长尾识别的校准工作 作者 Zhisheng Zhong、 Jiequan Cui、Shu Liu 和 Jiaya Jia 香港中文大学和 SmartMore 初读 摘要 深度神经网络在训练数据集类别极度不平衡时可能会表现不佳。最近&#xff0c…

010 Linux 进程间通信_匿名管道

前言 本文将会向你介绍匿名管道的原理以及用法,以及管道的使用存在的情况和管道的特性 文章重点 重点:匿名管道的原理,使用情况,以及特性 进程间通信 进程间通信的本质: 让不同的进程先看到同一份资源&#xff0c…

换个角度看境外支付系统:警惕金融风险之安全测试实践

【面试突击班】1. 性能测试主要关注哪些指标? ,这个名词相信生活在当下社会的大家应该都不在陌生了吧,他时时刻刻充斥在我们的日常生活中,哪里有交易发生,哪里就有它的身影。 其实直白的来说,支付系统是扮…

数组传参调试小技巧

数组传参调试小技巧 前言正文 前言 亲爱的小伙伴们&#xff0c;你们好呀&#xff01;我是莹莹&#xff0c;今天我来给大家分享关于数组传参调试的技巧&#xff0c;希望能够帮助你们&#xff01; 正文 首先&#xff0c;我们先来看一段数组传参代码 #include<stdio.h>v…