GUI原理学习

什么是GUI

GUI 是 Graphical User Interface(图形用户界面)的缩写。在GUI中,并不是只有键入文本和返回文本,用户可以看到窗口、按钮、文本框等图形,而且还可以用鼠标点击/键盘键入。

一、GUI程序原理分析

1、命令行应用程序

其实,命令行应用程序也算是个简易的GUI界面,(用户与控制台应用程序的交互通常只需使用键盘和显示屏)。

①、其特点:
  • 是一种顺序执行结构的可执行程序
  • 程序执行过程不需要与用户产生交互
  • 程序执行后会给出最终的运行结果
②、运行模式

特点:固定开始与固定结束。
在这里插入图片描述

③、应用场景
  • 单任务场合
  • 五交互与简单交互场合
  • 服务器应用场合

简单来说:命令行应用程序是早期计算机系统中的主要程序类型。

编译过程中不产生用户交互,编译结束后或者生成可执行程序或者给出错误信息。

2、图形界面应用程序

①、Why?
  • 计算机走进日常
  • 计算机开始处理各个领域的事
  • 计算机用户不再是专业计算机工作者
②、How让计算机程序更好走进普通用户日常生活?

——GUI

③、其特点
  • 基于消息驱动模型的可执行程序
  • 程序的执行依赖于用户的交互过程
  • 程序执行过程中实时响应用户操作
  • 一般情况程序执行后不会自动退出
④、运行模式(原理)

在这里插入图片描述

相应代码流程:

void mian(int argc, char** argv)
{
    //1. 定义主窗口

    //2. 创建主窗口

    //3. 创建主窗口内的元素

    //4. 显示主窗口

    //5. 进入消息接收/处理循环    
}

GUI程序执行后不会主动退出,都停留在接收消息,根据消息执行相应操作的循环。

⑤、消息处理模型

在这里插入图片描述

例子:

  • 以触摸屏为例,当用户点击触摸屏,首先操作系统内核空间的触摸屏设备驱动程序会感知到屏幕上被触摸是XY坐标,然后设备驱动程序会将用户操作封装成消息传递给GUI程序运行时创建的消息队列,GUI程序在运行过程中需要实时处理队列中的消息,当队列没有消息时,程序将处于停滞状态。
⑥、应用场合
  • 多任务
  • 强用户交互
  • 非计算机用户
    在这里插入图片描述
    总结:图形界面用户程序是当代计算机系统中的主要程序类型

3、当代软件产品架构模型

在这里插入图片描述

4、小结

在这里插入图片描述

二、GUI程序实例分析

写一个 GUI 程序大体上可以分为两个主要部分。需要创建用户界面本身(UI),然后编写代码让 UI 按照你的想法来实现功能。创建 UI 需要在窗口上排布一些东西,比如按钮、文本框、选择框等。然后你编写代码来响应按钮点击、文本框输入、选择框中选择某项等动作。

1、GUI程序开发概述

现代操作系统支持GUI界面

  • 现代操作系统提供原生SDK支持GUI程序开发 -
  • GUI程序开发是现代操作系统上的主流技术
  • 不同操作系统上的GUI开发原理相同
  • 不同操作系统上的GUI SDK 不同

SDK:
SDK 就是 Software Development Kit 的缩写,——软件开发工具包。这是一个覆盖面相当广泛的名词,
可这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。
SDK被开发出来是为了减少程序员工作量的。
比如——有公司开发出某种软件的某一功能,把它封装成SDK(比如数据分析,SDK就是能够实现数据分析功能的SDK),出售给其他公司做开发用,其他公司如果想要给软件开发出某种功能,但又不想从头开始搞开发,直接付钱省事。
SDK与API区别:
SDK想象成一个虚拟的程序包,在这个程序包中有一份做好的软件功能,这份程序包几乎是全封闭的,只有一个小小接口可以联通外界,这个接口就是API。
简单来说:
有一杯密封饮料,它的名字叫做“SDK”。
饮料上插着吸管,吸管的名字叫“API”。
把你叫做“XX系统”。
如果你想喝到SDK里的饮料(让系统拥有SDK中的功能),你必须通过API这根吸管来实现(通过API连接你的系统和SDK工具包),否则你就喝不到饮料。
也可以说:SDK 是可以下载的。API 是写在文档里的。

2、GUI程序开发原理

①、
  • GUI程序在运行时会创建一个消息队列
  • 系统内核将用户操作翻译成对呀的程序消息
  • 程序在运行过程中需要实时处理队列中的消息
  • 队列中没有消息,程序将处于停滞状态
    -在这里插入图片描述
②、不同的操作系统支持相同的GUI开发原理

在这里插入图片描述
代码流程:

int mian()
{
	fd=DefineMainWindow();
	win=CreateMainWindow(fd);
	CreatElements(win);
	DisplayMainWindow(win);
	while(GetMessage(&msg))
	{
		//Send msg to win
	}
	return 0;

}

3、GUI程序开发的本质

①。GUI程序开发过程:

  • 用程序创建窗口、窗口元素

  • 在消息处理函数中根据程序消息做出不同相应
    在这里插入图片描述
    ②。多数操作系统以C的方式提供GUI SDK

**例子:**以Window为例
在这里插入图片描述

4、小结

  • 现代操作系统提供原生SDK支持GUI程序开发
  • 不同操作系统上的GUI SDK不同
  • 不同操作系统上的GUI开发原理相同
  • GUI程序开发包括
    —— 代码中:用程序创建窗口及窗口元素
    -——在消息处理函数中根据程序消息做出不同响应

——————————————————————
参考来源:
1:https://blog.csdn.net/qq_29344757/article/details/77817321

2:本文包含狄泰软件资料内容,

3:链接:https://www.zhihu.com/question/21691705/answer/770586138
作者:简道云
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值