zoukankan      html  css  js  c++  java
  • 002_GUI程序实例分析

    一、 GUI 程序开发概述

    1、现代操作系统提供原生SDK(Software Development Kit)支持GUI程序开发。
    2、GUI程序开发是现代操作系统上的主流技术。
    3、不同操作系统上的 GUI 开发原理相同,但 GUI SDK 不同。

    二、 GUI 程序开发原理

    1、GUI 程序在运行时会创建一个消息队列。
    2、系统内核将用户操作翻译成对应的程序消息(用户对计算机进行操作时,操作系统内核就会检测到用户的操作,系统内核就会根据用户当前的操作来生成一个程序消息,于是把这个程序消息发送到一个有焦点的应用程序)。
    3、程序在运行过程中需要实时处理队列中的消息。
    4、当队列中没有消息时,程序将处于停滞状态。

    不同操作系统支持相同的 GUI 开发原理

    三、 GUI 程序开发的本质

    GUI 程序开发其实就是两个主要的工作要做:

    1、在代码中用程序创建窗口及窗口元素(说白了就是用程序来创建GUI界面)。
    2、在消息处理函数中根据程序消息做出不同的响应。

    四、 GUI 程序开发实例

    五、 GUI 程序开发初体验



    第一步:定义主窗口的样式


    补充:在Windows里面(L后面加上一个字符串)表示该字符为宽字符,也就是说不再是ASCII,而是UTF-8或是unicode的编码。

    什么是unicode?
    unicode与ASCII一样也是一种字符编码方法,它占用两个字节(0000H—FFFFH),容纳65536 个字符,这完全可以容纳全世界所有语言文字的编码。在unicode 里,所有的字符都按一个字符来处理, 它们都有一个唯一的unicode 码。
    使用Unicode 编码可以使工程同时支持多种语言, 使工程国际化。即在不同语言的系统下不至于产生乱码。

    第二步:创建主窗口

    第三步:创建元素

    第四步:在屏幕上显示窗口

    第五步:通过操作系统提供的(GetMessage)函数到应用程序消息队列里将消息取出来,取出来之后进行翻译

    编译运行测试:

    这样第一个 GUI 应用程序就已经运行起来了,可以托大托小,也可以最小化,也可以最大化,它都有标准的Windows GUI 应用程序的行为。
    此时点击按钮是没有任何反应的,根据 GUI 应用程序开发原理可知,当我们的用户做了一个按下的操作,那么Windows操作系统就会根据这个操作生成一条消息,生成的消息会放到我们的应用程序消息队列里,最终会发送到消息处理函数。但是发送消息处理函数好像什么事都没有发生,因为在消息处理函数里面并没有处理这条消息

    点击右上角关闭按钮,会发现 GUI 应用程序还是在运行,并没有直接关闭,因为操作系统提供的默认消息处理函数(用来处理绝大多数windows GUI 应用程序应该拥有的行为)会把该 GUI 应用程序切换到后台运行。

    1.添加关闭窗口代码

    为什么使用(PostQuitMessage)函数?每个应用程序都会返回一个值给操作系统,那么这个调用就是将参数0返回给操作系统,并且退出自己。这个零就是告诉操作系统当前的应用程序是正常退出的。

    再次运行,点击关闭按钮就是真正的退出了。

    2.添加代码处理按钮消息
    通过创建元素时id值来知道用户按下的按钮是哪一个。也可以通过消息里的第三个参数的低位获得id值,第三个参数的高位获得真正用户的动作

    再次运行

    六、 用 MFC 来完成刚才的应用程序

    1、新建一个 MFC 工程


    MFC 这套框架已经完整的实现了经典的 GUI 程序开发模式,它对于界面的开发是靠拖拽来完成的,也就是可以直接操作不用写代码来创建主窗口了

    2、我们可以把主窗口不想要的通通删除掉

    3、然后编译,运行

    我们一行代码都没有写,这个 MFC 应用程序就运行起来了
    4、从工具箱里面拖出一个按钮放到主窗口

    修改元素

    仍然没有写任何代码,再次编译运行

    点击按钮发现没有任何反应,那是因为还没有编写消息处理函数
    5、编写消息处理函数
    右键选择类向导


    添加处理函数


    双击之后,MFC 的框架就将我们定位到这里

    在函数体内编写点击后执行的代码

    到目前为止就只写了这一行代码,编译运行

    在 MFC 这个框架里面,将点击按钮这个消息直接映射到了一个类函数上面去了

    七、 总结:

    GUI 程序开发包括:
    在代码中用程序创建窗口及窗口元素。
    在消息处理函数中根据程序消息做出不同响应。

  • 相关阅读:
    Cesium加载Geoserver wtms服务和wms服务
    使用GeoServer+PostgreSQL+PostGIS+OpenLayers3
    Cesium 绕点旋转飞行效果
    时间分片技术(解决 js 长任务导致的页面卡顿)
    Cesium随笔:视锥绘制(下)
    使用geoserver发布arcgis切片
    Cesium点击获取模型或者地形点的位置
    npm库使用roullup封装经验总结
    一个删除node_modules文件夹的脚本
    cesium点击面高亮事件
  • 原文地址:https://www.cnblogs.com/luosir520/p/11619206.html
Copyright © 2011-2022 走看看