GUI程序原理分析
1,Qt 是一套跨平台的程序设计库,这套程序设计库主要用于 GUI 方面的程序设计开发,所以本系列博文主要是利用C++介绍 GUI 程序设计技术;
2,命令行应用程序:
1,命令行应用程序的特点(Command Line Interface):
1,是一种基于顺序执行结构的可执行程序;
1,有一个固定的开始、固定的结束;
2,程序执行过程中不需要与用户产生交互;
1,为什么叫做命令行应用程序,因为它体现出给人的感觉就是一 个一个的命令,比如 ls;
2,ls 这条命令其实对应着一个程序,这是一个命令行应用程序;
3,ls 一旦开始执行,就执行单一的列出文件或文件夹任务,列完后主动退出;
3,程序执行后给出最终的运行结果;
1,gcc a.c b.c c.c;
1,利用 gcc 这个命令行应用程序完成编译这三个 C 程序的任务,在编译器编译过程中不产生用户交互,编译结束后或者生成可执行程序或者给出错误信息或警告信息;
2,命令行应用程序的运行模式:
1,非常简单,就是从 main() 函数开始调用各种函数,调用完之后,我们的任务就完成了,程序运行结束;
2,特点:
1,程序的运行有固定的开始(敲回车运行某个命令的时候开始) 和固定的结束(命令行完成命令后结束);
3,命令行应用程序蕴含的软件设计方法:
1,一种面向过程的程序设计方法,将一个大的问题分解为各种小 的问题,然后将小的问题逐个解决,整个大的问题也就解决了,对应到这里就是 main() 函数要完成一个大任务,首先 function1() 完成一个小任务,然后 function2() 完成一个小任务,最后通过 function4() 完成一个任务,这样大任务就完成了;
3,命令行应用程序适用于:
1,单任务场合;
2,无交互或简单交互场合;
3,服务器应用场合:
1,自身运行所占用的资源很少;
4,命令行应用程序是早期计算机系统中的主要程序类型:
1,早期计算机系统主要用来进行科学计算,科学计算需要科学家输入数据,运行后给出结果,所以说对于科学计算来说必然有一个规定的开始、一个固 定的结束,计算机进行计算过程中,是不需要和我们当时的科学家进行交互的,科学家只需要知道一个结果;
2,命令行应用程序的诞生是有历史原因的,早期的计算机系统中就只需要命令行应用程序就可以了;
3,图形界面应用程序:
1,图形界面应用程序的诞生:
1,随着计算机技术的发展,计算机走进日常生过;
2,计算机程序开始需要处理各个领域中的问题;
1,处理大量非科学问题;
3,计算机用户已经不再是专业的计算机工作者;
2,问题:
1,如何让计算机程序更好的适应普通用户并走进日常生活?
1,用图形界面应用程序;
3,图形界面应用程序的特点(Graphic User Interface):
1,是一种基于消息驱动模型的可执行程序;
2,程序的执行依赖于用户的交互过程;
1,因为要和用户进行更好的交互;
3,程序执行过程中实时响应用户操作;
4,一般情况下程序执行后不会主动退出;
1,被动的、多任务程序;
2,和命令行应用程序最大的本质不同;
4,图形界面应用程序的运行模式:
1,设计图形用户界面是什么样子,这种设计最后会体现在我们的程序当中;
2,图形界面应用程序运行模式有一定的规律可循,一般而言会从main() 开始,显示有个性的图形界面需要首先定义主窗口,其次创建主窗口(对 于一个操作系统而言,它的主窗口样式一般都是一样的)、然后创建主窗口中的元素(按钮、菜单、工具栏)、之后显示主窗口,最后进入消息循环(等用户操作,为了让这个程序不能往下执行,则程序执行死循环), 这个循环等待着操作系统来给这个应用程序发消息;到
5,图形界面应用程序的消息处理模型:
1,本图是用户如何使用计算机的原理图;
2,普通的用户无法使用计算机,因为此时计算机只是一堆硬件,普通用户如果要使用计算机,需要借助操作系统的支持,当操作系统安装到计算机后,用户就可以使用计算机了;
3,用户的操作主要分为两类:鼠标操作,键盘操作;
4,用户对计算机操作后,操作系统内核就能够检测到用户操作,如果发现用户是点了鼠标,系统内核会根据当前操作点鼠标生成一个系统消息;
5,系统消息被系统内核发送到有焦点的应用程序;
6,图形界面应用程序中都有一个消息队列,系统消息是被放到有焦点的 应用程序中的消息队列中;
7,消息循环就会从这个队列中将系统消息取出来,然后调用消息处理函数;
8,图形界面应用程序必须编写消息处理函数用于处理对应的消息;
(9),图形用户界面应用程序多数时候就是编写消息处理函数处理消息。
6,图形界面任务程序适用于:
1,多任务场合:
1,功能比较强大;
2,编写文字、编程、画图;
2,强用户交互场合;
3,非专业计算机用户:
1,办公室职员;
2,图形界面应用程序是当代计算机中的主要程序类型;
4,图形界面程序 VS 命令行程序:
1,当代大型软件产品架构模型:
1,图形界面应用程序和命令行应用程序是互补的关系,不是竞争关系, 命令行程序由于单任务特性,一般用来开发后台应用程序,图形界面应用程序交互性比较好,用于用户界面交互层;
2,图形界面交互层用的技术有 Qt、MFC、.Net 等;
3,架构分成出网路更新模块、数据库管理模块、虚拟机引擎模块(为了扩展性、可修改可维护性)等的命令行程序,一般在安装软件下呈现为 .exe文件;
4,合理的应用图形界面应用程序和命令行应用程序往往会给我们的软件质量带来提高,这也是一个架构师的艺术,如何在某个领域选择更好的技术,要看到某种技术的优势在哪里,不要只看到新技术忽略旧技术;
5,小结:
GUI程序原理分析的更多相关文章
- 第1课 GUI程序原理分析
1. 命令行应用程序 (1)命令行应用程序的特点 ①是一种基于顺序执行结构的可执行程序 ②程序执行过程中不需要与用户产生交互 ③程序执行后给出最终的运行结果 (2)命令行应用程序的运行模式——程序运行 ...
- 第2课 GUI程序实例分析
1. GUI程序开发概述 (1)现代操作系统提供原生SDK支持GUI程序开发 (2)GUI程序开发是现代操作系统上的主流技术 (3)不同操作系统上的GUI开发原理相同 (4)不同操作系统上的GUI S ...
- Android应用程序组件Content Provider在应用程序之间共享数据的原理分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6967204 在Android系统中,不同的应用 ...
- GUI程序分析实例
GUI程序开发概述 GUI程序开发原理 GetMessage(&msg)将消息队列中的消息取出来,在循环中进行处理. GUI程序开发的本质
- Handler系列之原理分析
上一节我们讲解了Handler的基本使用方法,也是平时大家用到的最多的使用方式.那么本节让我们来学习一下Handler的工作原理吧!!! 我们知道Android中我们只能在ui线程(主线程)更新ui信 ...
- 转载:AbstractQueuedSynchronizer的介绍和原理分析
简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架.该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础.使用的方法是继承,子类通过 ...
- NOR Flash擦写和原理分析
NOR Flash擦写和原理分析 1. NOR FLASH 的简单介绍 NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH支持Execute On Chip,即程序可以直 ...
- 客户端GUI程序开发漫谈
这篇文章包含了这个领域的很多开源项目的介绍,还有我多年来的心血和汗水 去年夏天的时候,我用QT做了一个小工具 后来还用QT做了流程设计器 我把程序分享给飞扬青云之后,他甚至搞出来一套QT的皮肤来 说 ...
- 使用AsyncTask异步更新UI界面及原理分析
概述: AsyncTask是在Android SDK 1.5之后推出的一个方便编写后台线程与UI线程交互的辅助类.AsyncTask的内部实现是一个线程池,所有提交的异步任务都会在这个线程池中的工作线 ...
随机推荐
- 4. ClustrixDB CLX命令详解
Clustrix提供了一个名为clx的实用程序来管理其分布式ClustrixDB数据库. 命令在 /opt/clustrix/bin/ 下面 sudo su - clxm 用户即可使用 clx hel ...
- webapi 参数的请求和接收
数据传递和接收1.数据头为User-Agent: FiddlerAccept: application/xml; charset=utf-8Host: localhost:1258Content-Le ...
- linux-history-ps1-1
1.串行端口终端(/dev/ttySn) 串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备.计算机把每个串行端口都看作是一个字符设备.有段时间这些串行端口设备 ...
- java+struts上传文件夹文件
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...
- 容器适配器————queue
只能访问 queue<T> 容器适配器的第一个和最后一个元素.只能在容器的末尾添加新元素,只能从头部移除元素. 操作 queue<int> q;//创建一个int型的空队列q ...
- Nginx的正则表达式
Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Ра ...
- Redis单节点部署
安装Redis 由于REDIS使用单线程处理请求,CPU的快慢最对REDIS的性能有较大影响,官方建议INTEL的CPU,其效率能比AMD高一倍左右. 下载Redis:wget http://down ...
- 《Effective Java》读书笔记 - 3.对于所有对象都通用的方法
Chapter 3 Methods Common to All Objects Item 8: Obey the general contract when overriding equals 以下几 ...
- Chrome 抓包:快速定位HTTP协议问题
标签(空格分隔): 快速定位HTTP协议问题 Chrome:快速定位HTTP协议问题 快捷键:control+shift+i(windows),command+option+i(mac) 控制器: 控 ...
- webrtp官方demo运行
Google官方提供的webrtc的demo对应的网站是https://webrtc.github.io/samples/ 上面的DEMO对我这种入门的人很有用,用chrome浏览器最新的版本直接可以 ...