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_CHARDispatchMessage (&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.rhkb.cn/news/268715.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何做代币分析:以 LEO 币为例

作者: lesleyfootprint.network 编译:cicifootprint.network 数据源:LEO 代币仪表板 (仅包括以太坊数据) 在加密货币和数字资产领域,代币分析起着至关重要的作用。代币分析指的是深入研究与代币相关的数…

uniapp实战:父子组件传参之子组件数量动态变化

需求说明 现有的设置单元列表,每个带有虚线加号的可以看做是一组设置单元,点击加号可以添加一组设置单元.点击设置单元右上角可以删除对应的设置单元. 实现思路说明 利用数组元素添加或是删除的方式实现页面数量动态变化.由于每个设置单元内容都相同所以单独封装了一个子组件.…

LeetCode206题:反转链表(python3)

采用递归 class Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:cur headpre Nonewhile cur:temp cur.next # 保存下一轮循环的节点cur.next pre # 将当前节点 cur 的指针指向上一个节点 prepre curcur tempreturn pre

uni-app 微信小程序:启用组件按需注入

原文地址:uni-app 微信小程序:启用组件按需注入 - 掘金 只需添加以下代码"lazyCodeLoading": "requiredComponents"

卷积神经网络(CNN)原理与实现

卷积神经网络(CNN) 卷积神经网络原理卷积神经网络的数学推导卷积层反向传播算法数学推导卷积层实现代码 卷积神经网络(CNN) 卷积神经网络原理 卷积神经网络是一种用于图像、语音、自然语言等数据的深度学习模型,其核心思想是使用卷积操作提取输入数据的特征&…

Mysql中的事务

什么是事务: 多条sql语句,要么全部成功,要么全部失败。 事务的特性: 1:原子性(Atomic): 组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有操作都成功,整个事务才会…

算法学习系列(三十八):超级源点问题

目录 引言一、题目描述二、解题思路三、示例代码 引言 关于最短路问题不论是竞赛、找工作、笔试面试、机试考的都是挺多的,所以还是非常的重要,最重要的就是模板首先背过,然后通过刷题见各种各样的题,具体难点就是如何建图、怎么…

【牛客面试必刷TOP101】Day25.BM38 在二叉树中找到两个节点的最近公共祖先和BM40 重建二叉树

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:牛客面试必刷TOP101 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!&…

什么是智能合约

前言:在介绍智能合约的前提下,需要先介绍一下区块链 一.什么是区块链 区块链实质上是一个去中心化、分布式的可进行交易的数据库或账本,具有下列典型特征: 去中心化:简单来说,在网络上一个或多个服务器瘫…

IPC对象、消息队列 、共享内存

我要成为嵌入式高手之3月4日Linux高编第十四天!! 消息队列、共享内存、信号灯: 一、IPC对象 内存文件,如何查看? 1、ipcs: 查看系统中的IP对象的消息队列、共享内存、信号灯信息 2、ipcrm:…

蓝桥杯倒计时 41天 - 二分答案-最大通过数-妮妮的月饼工厂

最大通过数 思路&#xff1a;假设左边能通过 x 关&#xff0c;右边能通过 y 关&#xff0c;x∈[0,n]&#xff0c;通过二分&#xff0c;在前缀和中枚举右边通过的关卡数&#xff0c;保存 xy 的最大值。 #include<bits/stdc.h> using namespace std; typedef long long ll…

产品营销展示型wordpress外贸网站模板

工艺品wordpress外贸主题 简约大气的wordpress外贸主题&#xff0c;适合做工艺品进出品外贸的公司官网使用。 https://www.jianzhanpress.com/?p5377 餐饮设备wordpress外贸主题 简洁的wordpress外贸主题&#xff0c;适合食品机械、餐饮设备公司使用。 https://www.jianzh…

洛谷 B3620 x 进制转 10 进制

题目描述 给一个小整数 x 和一个 x 进制的数 S。将 S 转为 10 进制数。对于超过十进制的数码&#xff0c;用 A&#xff0c;B&#xff0c;…… 表示。 输入格式 第一行一个整数 x; 第二行一个字符串 S。 输出格式 输出仅包含一个整数&#xff0c;表示答案。 输入输出样例…

leetcode 移除链表元素

本题中&#xff0c;我们是要移除链表的某一个节点&#xff0c;为了确保统一操作&#xff0c;我们需要使用虚拟头节点&#xff0c;这样我们删除节点的时候&#xff0c;就是把这个要删除的节点&#xff08;当前节点cur&#xff09;的前一个节点pre&#xff0c;使得pre.next指向要…

sqlserver保存微信Emoji表情

首先将数据库字段&#xff0c;设置类型为 nvarchar(200)一个emoji表情&#xff0c;占4字节就可以了&#xff0c;web前端展示不用改任何东西&#xff0c;直接提交数据保存&#xff1b;回显也会没有问题&#xff0c;C#代码不用做任何处理&#xff1b; 不哭不闹要睡觉&#x1f31…

执行一条 select 语句,期间发生了什么?

大家好我是苏麟 , 今天开始又开一个坑 MySQL原理 . 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 执行一条 select 语句&#xff0c;期间发生了什么&#xff1f; 学习 SQL 的时候&#xff0c;大家肯定第一个先学到的就是 select 查询语句了&#xff…

UCSF DOCK 分子对接详细案例(04)-基于RDKit描述符的分子从头设计DOCK_D3N

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、 软件及操作环境二、研究目的三、结构文件准备四、 DOCK/RDKit中 de novo design4.1 de novo design - refine_D3N4.2 对输出重新评分 总结参考资料 前言 本文是UCSF DOCK的使用案例分享&…

Windows服务器:通过nginx反向代理配置HTTPS、安装SSL证书

先看下效果&#xff1a; 原来的是 http&#xff0c;配置好后 https 也能用了&#xff0c;并且显示为安全链接。 首先需要 SSL证书 。 SSL 证书是跟域名绑定的&#xff0c;还有有效期。 windows 下双击可以查看相关信息。 下载的证书是分 Apache、IIS、Tomcat 和 Nginx 的。 我…

uniapp实现-审批流程效果

一、实现思路 需要要定义一个变量, 记录当前激活的步骤。通过数组的长度来循环数据&#xff0c;如果有就采用3元一次进行选择。 把循环里面的变量【name、status、time】, 全部替换为取出的那一项的值。然后继续下一次循环。 虚拟的数据都是请求来的, 组装为好渲染的格式。 二…

linux中对信号的认识

信号的概念与相关知识认识 信号是向目标进程发送消息通知的的一种机制。 信号可以以异步的方式发送给进程&#xff0c;也就是说&#xff0c;进程无需主动等待&#xff0c;而是在任何时间都可以接收到信号。 信号的种类 用kill-l命令查看系统定义的信号列表&#xff1a; 前台…