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. 第1课 GUI程序原理分析

    1. 命令行应用程序 (1)命令行应用程序的特点 ①是一种基于顺序执行结构的可执行程序 ②程序执行过程中不需要与用户产生交互 ③程序执行后给出最终的运行结果 (2)命令行应用程序的运行模式——程序运行 ...

  2. 第2课 GUI程序实例分析

    1. GUI程序开发概述 (1)现代操作系统提供原生SDK支持GUI程序开发 (2)GUI程序开发是现代操作系统上的主流技术 (3)不同操作系统上的GUI开发原理相同 (4)不同操作系统上的GUI S ...

  3. Android应用程序组件Content Provider在应用程序之间共享数据的原理分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6967204 在Android系统中,不同的应用 ...

  4. GUI程序分析实例

    GUI程序开发概述 GUI程序开发原理 GetMessage(&msg)将消息队列中的消息取出来,在循环中进行处理. GUI程序开发的本质

  5. Handler系列之原理分析

    上一节我们讲解了Handler的基本使用方法,也是平时大家用到的最多的使用方式.那么本节让我们来学习一下Handler的工作原理吧!!! 我们知道Android中我们只能在ui线程(主线程)更新ui信 ...

  6. 转载:AbstractQueuedSynchronizer的介绍和原理分析

    简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架.该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础.使用的方法是继承,子类通过 ...

  7. NOR Flash擦写和原理分析

    NOR Flash擦写和原理分析 1. NOR FLASH 的简单介绍 NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH支持Execute On Chip,即程序可以直 ...

  8. 客户端GUI程序开发漫谈

    这篇文章包含了这个领域的很多开源项目的介绍,还有我多年来的心血和汗水  去年夏天的时候,我用QT做了一个小工具 后来还用QT做了流程设计器 我把程序分享给飞扬青云之后,他甚至搞出来一套QT的皮肤来 说 ...

  9. 使用AsyncTask异步更新UI界面及原理分析

    概述: AsyncTask是在Android SDK 1.5之后推出的一个方便编写后台线程与UI线程交互的辅助类.AsyncTask的内部实现是一个线程池,所有提交的异步任务都会在这个线程池中的工作线 ...

随机推荐

  1. JAVA笔记21-数组

    一.数组内存分析 1.java中的数组是引用数据类型,必须分配在堆中,数组中每个元素相当于它的成员变量(默认值为0):但C中的数组可以分配在栈中.数组中的元素可以是基本类型,也可以是引用类型.如Str ...

  2. 转 弹性反向传播(RProp)和均方根反向传播(RMSProp)

    from http://blog.csdn.net/tsq292978891/article/details/78619384 都是一种权值更新算法,类似于SGD算法,其中,RMSProp是RProp ...

  3. Python 爬虫十六式 - 第七式:正则的艺术

    RE:用匹配来演绎编程的艺术 学习一时爽,一直学习一直爽   Hello,大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了 pyquery 今天我们将迎来我们数据匹配部分的最后一位 ...

  4. DevExpress.XtraGrid.Views.Grid.GridView

    private void SetView() { GridView gridView = (GridView)this.DefaultView; if (gridView != null) { gri ...

  5. EventArgs

    序言 DataEventArgs<DataSet> arg = new DataEventArgs<DataSet>(ds); 事件总线 什么是事件总线 我们知道事件是由一个P ...

  6. 【java工具类】对字节数组字符串进行Base64解码并生成图片

    import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import org.springfra ...

  7. CDOJ 1057 秋实大哥与花 线段树 区间更新+区间查询

    链接: I - 秋实大哥与花 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit ...

  8. 【bzoj1189】[HNOI2007]紧急疏散evacuate

    *题目描述: 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是’.’,那么表示这是一块空地:如果是’X’,那么表示这是一面墙,如果是’D’,那么表示这是一扇门,人们 ...

  9. Tensorflow2.0变化

    https://baijiahao.baidu.com/s?id=1627307436158652578&wfr=spider&for=pc https://zhidao.baidu. ...

  10. 跨平台迁移数据库windows-Linux

    将10.10.1.127服务器的数据库ORCL(WINDOWS)迁移到VM 10.10.10.168LINUX平台 操作系统:Windows server 2008r2 64bit CentOS  L ...