精华内容
下载资源
问答
  • 轻量级C ++ GUI库 LongUI中的功能 重量轻 LongUI的主要目标 静态链接框架,helloworld bin文件大小小于200kb 为此,LongUI中没有c ++异常 XML用户界面语言 与Mozilla的XUL部分兼容(XML部分) 部分兼容CSS获得...
  • 一种轻量级嵌入式GUI设计与源代码

    热门讨论 2016-05-03 12:14:34
    一种轻量级嵌入式GUI设计文档和源代码: 1. word文档描述该GUI设计原理; 2. ANSI C代码实现该GUI
  • 基于Linux的轻量级嵌入式GUI系统及实现,1、引言近年来,随着信息家电、手持设备、无线设备的迅速发展,人们对嵌入式系统的需求逐渐增多,要求也越来越高。这使为嵌入式系统提供一个友好方便、稳定可靠的G UI系统成为...
  • 1、引言  近年来,随着信息家电、手持设备、无线设备的迅速发展,人们对嵌入式系统的需求逐渐增多,...与普通环境下的GUI 系统相比较.嵌入式环境下的GUI 系统要求轻型、占用资源少、高性能、高可靠性、可配置等。同
  • 开源小型GUI,只需要gui,c和gui.h 一、资源要求 估算最低硬件要求: ROM - 13K RAM -2K 二、GUI框架 GUI 框架构成: 1、窗口:可以绘制多个窗口; 2、控件:支持窗口内显示其他控件如按钮、文本框等; 3、 事件...
  • Light Gui的新特性。 1图层和绘图: 支持多图层,使用与有多图层支持的处理器平台。 支持多图层的软件模拟,支持图层的alpha合并和滑动。 同时支持多种颜色格式的图层,如ragb8888模式、rgb565模式、256色调色板...
  • Web中老式RPG GUI轻量级框架! 目录 它是什么? 该框架为具有老式RPG风格的网络游戏提供了现成的GUI。 一旦包含了这个lib,您需要做的就是开始使用RPGUI类添加常规的html元素,其余的将由RPGUI完成! (图像...
  • 轻量级嵌入式GUI高级功能实现

    千次阅读 2014-09-20 11:14:44
    大多数嵌入式系统,仅提供几个按键和像素点较少的LCD,同时处理器运算能力有限(如8/16位单片机),不宜运行商用的GUI图形库(如uC/GUI、miniGUI、QT等),但仍然得为用户提供GUI功能。一个具有代表的硬件平台如下,...

    1引言

    大多数嵌入式系统,仅提供几个按键和像素点较少的LCD,同时处理器运算能力有限(如8/16位单片机),不宜运行商用的GUI图形库(如uC/GUI、miniGUI、QT等),但仍然得为用户提供GUI功能。一个具有代表的硬件平台如下,提供6个输入按键:上移、下移、左移、右移、确定和取消;有一LCD,不限制物理尺寸与像素点数。如工业仪器需要设置参数一样,GUI需要支持用户输入,本文为满足这种需要设计图形控件。

    2图形控件基类

    面向对象是C++和JAVA之类的高级语言话题,在这里为什么需要用C语言来实现呢,原因在于嵌入式环境下往往不支持C++和JAVA语言,况且嵌入式工程师对C语言十分亲切,减少了学习成本。图形构件因为其关联性比较强(继承),往往将数据和操作组织在一起(封装),同时为高效实现经常将异构的控件统一操作(多态),基于面向对象来实现是顺其自然的。[1]

    下面结合图形控件基类的设计探讨C语言实现面向对象的原理。

     

    图1图形控件基类的设计

    当我们用C语言将上述控件用结构体来组织时,实际上就完成了封装。这时,对一个对象的操作仅需要调用它的方法,如例1所示。

    例1 设定义如下图形控件基类

    typedef struct _graphic_ctrl {……} GRAPHIC_CTRL;

    定义一个图形控件对象:GRAPHIC_CTRL stGCtrl;

    可以操作这个对象的方法:gctrl_Create(&stGCtrl,NULL),这个方法根据对象的CtrlSort自动选择对应的派生类的创建函数。

    如果另外需要定义一个类,如文本输入框,它除了继承基类外,还有自己的属性和方法,C语言的实现是将基类包含在子类的结构体中,例2说明了继承的实现。

    例2文本输入类继承基类

    typedef struct _text_edit

    {

        GRAPHIC_CTRL stGCtrl;

        char *p_chBuf; 

    ……    /* Other attributes of TextEditor */

    } TEXT_EDIT;

    定义一个文本输入框对象:TEXT_EDIT stTextEdit;它可以操作父类的方法,如gctrl_Create(&stTextEdit,NULL)。

    一个按钮和一个文本输入框的回车响应动作是不同的,如何实现控件这种需求呢?改变它调用方法的实现细节,这就是多态的特性。

    例3 重载RespBtn方法实现多态

    void EnterBtn(void);  

    void EnterTextEdit(void);

    GRAPHIC_CTRL stBtn;

    TEXT_EDIT stTextEdit;

    ConstructBtn(&stBtn, EnterBtn);

    ConstructTextEdit(&stTextEdit, EnterTextEdit);

    现在,终于可以展现一下面向对象带来的优势了。设系统响应用户的“回车”按键,软件可以不考虑控件对象的类别而统一调用RespBtn ()方法,这就实现了软件开发的精髓之一:高度抽象把复杂的事情简单化,例4描述了这种统一操作。

    例4 统一响应控件的回车操作

    gctrl_RespBtn((GRAPHIC_CTRL *)&stBtn);

    gctrl_RespBtn((GRAPHIC_CTRL *)&stTextEdit);

    有了上述C语言实现面向对象的基础后,我们再来考虑设计图形控件就变得容易多了。

     

    3按钮

    如右图4个按钮:

    按钮是简单的控件,它直接继承GRAPHIC_CTRL父类就能实现。当执行Create()方法时,先将字符串打印在区域中间,后画出一个矩形;Destroy()方法是空操作,不需要实现;执行Active()方法时,将字符串和矩形区域反白显示;Inactive()方法同Create()方法一样,打印字符串和绘制矩形;RespBtn()方法中,它响应“确定”按键的具体动作,针对上/下/左/右方向按键它向调用者(如窗口)返回切换控件的消息;扩展的Enter()方法实现不同按键的“确定”动作响应,从而实现多态技术。

    图2按键类的设计

    4下拉菜单

    Create()方法创建的下拉选择框如右图,

    除绘制矩形框和框内字符串外,还需要打印框外的文本(定义为STATIC_TEXT),因而在类的属性中需要添加STATIC_TEXT的指针。Active()方法表现的效果是,和按钮激活的动作相似;Inactive()方法与Create()方法相同,Refresh()方法与Create()方法也相同。

    在响应按键消息时就有区别了。如果“确定”键已经被按下,那么控件将呈现图3左边的选择项,这时需要计算是否有空间向下绘制选择项(可能会超过LCD的下端),如果没有空间将向上绘制选择项。“上/下按键”可以操作选择项,图3右显示了“下按键”操作的结果,因此也需要一个记录上下键位置的数据。再次按下“确定”键完成选择操作,如,而“取消”键随时可以退出操作过程。

     

    图3下拉选择项

    如果“确定”键没有被按下,“上/下/左/右按键”的响应简单为向调用者(如窗口)返回切换控件的消息。

    很明显,响应按键操作需要一个状态机,因此类的属性中将添加BtnStat。

    控件的Destroy()方法就变得繁忙了,它有三件事要干:首先向控件返回被选择项的索引,如果是“确定”键将返回有效下标,如果是“取消”键将返回无效下标;其次清除选择项绘制的整个区域;最后得把被选择项区域破坏的其他控件恢复。

    恢复被破坏的控件将是一个值得商榷的话题,理想的方法是先将被破坏的区域保存起来再予以恢复,但这种方法需要操作像素VRAM区,我们将采用这种方法。它的硬件实现原理是LCD的控件器一般都支持READ_LCD_DATA()操作,当指定特定区域的位置和大小后,就可以读取该区域的像素数据并予以保存;软件上需要实现类似“压栈/弹栈”的操作,栈的深度依赖于需要保存VRAM的递归次数。有了软硬件的支持后,先把即将被破坏的区域予以压栈保存,当需要恢复该区域时,调用弹栈函数恢复该区域。

    总结下拉选择框的类定义如图4所示:

    图4下拉选择框类的设计

     

    5文本输入框

    右图显示了一个文本输入框的实例:

    除去矩形框前后的静态文本显示外,它和按钮的显示是很相似的。

    文本输入框需要一缓冲区来存储用户的输入,此外响应“确定”按键时调用软键盘,当软键盘退出时拷贝输入的字符串,它还需要限定输入字符串的个数,检查输入值的有效性,当输入非法时需要提示正确的数值范围。它的类定义如图5所示。

    图5文本输入框类的定义

     

    6 软键盘

    图6显示了一个软键盘的实例,它分为四部分:标题栏、输入栏、操作集和选项集。标题栏显示输入对象的名称;输入栏显示当前已经输入的文本集,光标可以在输入字符的任意位置;操作集从左到右是:光标左移、光标右移、退格、下一页和回车,光标左移和光标右移控制光标在输入栏中进行移动,退格可以删除光标前的字符,下一页就是显示下一页选项集(如果有分页),回车退出软键盘并返回所输入的字符串,选项集是用户能进行选择操作的字符集。

     

    图6软键盘实例

    当软键盘Create()时,它从调用者的对象中获取标题栏字符串,再根据选项集的数目计算页数与行数;Destroy()方法与下拉选择框相同,除清除自己外还需要通知刷新窗口内的所有控件。RespBtn()方法依赖不同的按键操作:上/下按键修改行索引,左/右按键修改列索引,当索引被修改时,先注销前一个选项(表现为失焦),后激活当前选项(表现为获焦)。当前激活项是选项集时,“确定”按键将该选项的字符添加到输入栏中;当前激活项是操作集时,“确定”按键执行对应的操作。“取消”按键可以随时退出软键盘。

    软键盘类的定义如图7所示:

    图7软键盘类的定义

    7 图形控件的使用

    上述设计了4种常用的图形控件,现在讲解调用它们的一般方法。

    首先需要为该图形对象申明并开辟内存,如:

    static BTN s_stBC91MExit =

    {

        .stGCtrl =

        {

            .chID = BC91M_EXIT,

            .chItemNum = 1,

            .chSelIx = 0,

            .nAddrX = CHAR_LEN * 33,

            .nAddrY = BTN_CTRL_Y,

            .nSizeW = BTN_CTRL_W,

            .nSizeH = CHAR_WIDE,

            .pp_chBtnStr = &a_strBC91MBtnStr[3],  

        },

    };

    其次需要调用方法初始化该图形对象,如下所示:

    gctrl_ConsBtn(&s_stBC91MExit, BC91MBtnEnter);

    创建窗口时也会调用控件的创建函数:

    gctrl_Create(&s_stBC91MExit, NULL);

    当用户按键选中该按钮时,gctrl_Active(&s_stBC91MExit, NULL)会被调用,以便于激活该对象;同样,gctrl_Inactive(&s_stBC91MExit, NULL)用于注销该对象;如果本按钮是激活对象,那么任何用户按键消息将会传递给它,即调用方法gctrl_RespBtn(&s_stBC91MExit,

    &uRtn);最后当窗口退出时会调用按钮的销毁方法,gctrl_Destroy(&s_stBC91MExit, NULL)。

     

    7 结束语

    本文设计的轻量级嵌入式图形控件已经在某工业控制产品中稳定使用多年,该产品选用TRULY公司320x240像素的LCD。采用面向对象的设计,使软件系统容易开发;简单化的设计使系统异常稳定;另外占用资源很少,这是商业GUI无法比拟的。需要了解LCD硬件连接与驱动以及窗口系统的实现,可以参见姊妹篇论文《一种轻量级嵌入式GUI设计》。

     

    参 考 文 献

     [1] Steve McConnell. Code Complete. Second Edition. 金戈等译。电子工业出版社,2006.3.

     

    该GUI设计原理和源代码可以从“我的资源”中免费下载,链接地址:http://download.csdn.net/detail/jiangjunjie_2005/9508662

     

    展开全文
  • 基于简单GUI轻量级重复文件查找程序和删除程序。 文件数据的可配置文件搜索和预览(通过外部工具)选项。 没有可用的命令行界面! 这基本上是dupfinder的重新实现,因为:它无法在我的计算机上编译,可执行文件也...
  • 计算器 使用 C++11 和 gtkmm GUI轻量级计算器
  • 轻量级的图形用户界面,用于更改JavaScript中的变量。 阅读或开始使用dat.GUI。 打包的版本 在代码中使用dat.GUI的最简单方法是使用build/dat.gui.min.js的内置源代码。 这些内置JavaScript文件捆绑了运行dat.GUI所...
  • GuiLite(超轻UI框架)- 最小的GUI

    千次阅读 2019-08-21 15:39:54
    GuiLite是什么鬼? GuiLite是5千行的C++图形界面库,可以运行在所有平台(例如:iOS,Android,Linux(ARM/x86-64),Windows(包含VR),Mac...✂️轻量: 只有5千行代码,与操作系统及第三方库无关 - 轻松编译/运...

    GuiLite是什么鬼?

    GuiLite是5千行的C++图形界面库,可以运行在所有平台(例如:iOS,Android,Linux(ARM/x86-64),Windows(包含VR),Mac,Docker和MCU)上;也可以与多种语言(例如: Swift, Java, Javascript, C#, Golang)协同工作。

    • ✂️轻量: 只有5千行代码,与操作系统及第三方库无关 - 轻松编译/运行
    • ⚡超快: 一次调用就可以完成图形渲染 - 程序更快速,UI更流畅
    • ?可嵌入: 可嵌入在Qt/MFC/Winform/Cocoa/Web程序中运行 - 充分利用现有Qt/MFC代码,局部GuiLite优化,亦可显著提升效率

    https://gitee.com/mirrors/GuiLite

    展开全文
  • 用于Linux的基于GUI轻量级IP电视记录器,能够安排IP电视(例如A1 TV)的记录。
  • Pandoc GUI 该软件旨在提供一个干净现代的GUI,以使用Pandoc通过markdown生成PDF文档,并能够传递多个选项,例如: 自定义代码高级主题 标题编号 字形 链接颜色 利润 PDF引擎 目录 屏幕截图 在制品 正在安装 在...
  • sqlite-gui是用于的轻量级Windows GUI,由C ++,WinAPI和。 小型,简单,强大,快速,免费。 特征 语法高亮和代码完成 同时编辑多个表格 彩色数据网格 存储执行历史记录和用户脚本 导出/导入数据 数据库图 数据库...
  • 用途及功能: https://github.com/joarhem/Matlab-Loading-Spinner
  • azula ,用于本地JavaScript应用程序的轻量级GPU加速HTML GUI ‌‌ azula是Electron的轻巧替代品。 它基于 ,它是的嵌入式友好Fork,具有较少的内存使用量和较低的磁盘空间要求。 azula可以选择以模式运行,这...
  • jd-gui,简单轻量的java反编译工具。
  • 一种轻量级嵌入式GUI设计

    万次阅读 2014-09-06 11:03:50
    大多数嵌入式系统,仅提供几个按键和像素点较少的LCD,同时处理器运算能力有限(如8/16位单片机),不宜运行商用的GUI图形库(如uC/GUI、miniGUI、QT等),但仍然得为用户提供GUI功能。一个具有代表的硬件平台如下,...

     1引言

    大多数嵌入式系统,仅提供几个按键和像素点较少的LCD,同时处理器运算能力有限(如8/16位单片机),不宜运行商用的GUI图形库(如uC/GUI、miniGUI、QT等),但仍然得为用户提供GUI功能。一个具有代表的硬件平台如下,提供6个输入按键:上移、下移、左移、右移、确定和取消;有一LCD,不限制物理尺寸与像素点数。本文描述一种基于上述硬件平台的实现简单的GUI设计原理,它提供窗口系统因此具备较好地显示效果。

     

    2硬件设计

    一般LCD显示模块包括三部分:控制器、驱动器和液晶显示屏,同时提供外部引脚供嵌入式处理器连接。以TRULY公司LCD显示模块MST-G320240DBSW-75W-E为例,它的控制器为RA8835,模块的引脚定义如下表1。[1]

    表1  LCD引脚示例

    硬件设计需要将LCD模块引脚正确连接到处理器控制引脚上。对于大部分单片机来说,将LCD模块引脚连接到普通I/O口是比较好的选择,如图1显示了AT89S52微处理器连接20引脚的LCD模块的原理图。

     

    图1  MCU的I/O连接LCD模块

    另一种高级接线方式是将它连接到Asynchronous Memory接口(如果处理器具备),这样一来操作LCD就像访问普通的存储器(如FLASH)一样,极大提供便利性,如图2所示。

    图2  ASYNC MEMORY连接LCD模块

     

    3  LCD驱动

    LCD控制器是LCD模块的核心,驱动一个LCD模块本质就是对LCD控制器写一系列指令的过程。[2]

     

    图3总线时序

    图3是LCD控制器RA8835的总线时序。对于普通I/O口连接LCD的方式,驱动程序需要对相应引脚按顺序产生高低电平,如下代码所示:(省略对引脚宏定义的语句)

    void lcd_cmdwrite(unsigned char cmd)

    {

        LCD_CS = 0; /* Enable access LCD */

        LCD_CD = 1; /* 0=Data; 1=Command */

        LCD_WR = 0; /* Enable write */

        LCD_RD = 1; /* Insure read signal is invalid */

        LCM_DATA = cmd; /* Put command value into port */

        LCD_WR = 1; /* Disable Write */

        LCD_CS = 1; /* Disable access LCD */

    }

    如果嵌入式处理器的Asynchronous Memory接口连接到LCD总线,需要设置该接口的延时时间,以便于符合图3中LCD的总线时序,然后驱动将会简化成写外设内存。针对图2中接线,写LCD命令寄存器的驱动代码如下:

    #define LCD_START_ADDR 0x20100000 /* BANK1 */

    #define LCD_DATA_ADDR (LCD_START_ADDR) /* Data */

    #define LCD_REG_ADDR (LCD_START_ADDR+2) /* CMD */

    #define p_wLcdDataAddr ((REG16*)LCD_DATA_ADDR)

    #define p_wLcdRegAddr ((REG16*)LCD_REG_ADDR)

    #define WR_LCD_REG(wRegVal) *p_wLcdRegAddr = wRegVal;

    LCD控制器指令一般组织成寄存器格式:寄存器名+数值。仍以上例为参考,控制器RA8835设置光标地址的指令为:寄存器名(CSRW)0x46,数值为2个字节(光标位置)。其中寄存器名写入指令输入缓冲器内(即A0=1),数值写入数据输入缓冲器内(即A0=0)。

    在一个LCD上绘制任何图形或文件的基础是绘制像素点,因此首先需要实现的功能是操作像素点。操作一个像素点的接口是:X坐标、Y坐标和动作(点亮或擦除),算法如下:

    1.  根据X坐标和Y坐标组合成LCD光标值并写入LCD控制器;

    2.  从LCD控制器中读取当前光标下RAM数值;

    3.  根据动作(点亮或擦除)修改RAM数值对应像素BIT值;

    4.  再次将光标值写入LCD控制器(读RAM导致该光标已移动);

    5.  将修改后数值写入LCD控制器的RAM区。

    一旦完成像素操作就可以施展一些高级绘制动作:文字、图片、几何图形等。

      

    4  GUI软件框架

    图4显示了本GUI设计的软件层次,引入分层会带来很多好处:[3]

    降低复杂度每一层只专注自己需要实现的功能,实现高内聚;

    提高可移植性不管更换处理器还是LCD只需要修改底层部分;

    改善性能使用高效算法来优化性能只需要修改一处。

    图4  GUI软件层次

    对于轻量级嵌入式GUI来说,窗口是十分重要的图形载体,嵌入式GUI一般一个屏幕仅容纳一个窗口,当前正在显示的窗口即为活跃窗口,其它均为睡眠窗口。因此窗口有2种状态:

    活跃期:处理消息,响应动作,如获取实时数据并刷新屏幕等;

    睡眠期:不响应外部消息,释放资源,如硬件和软件实体等;

    从逻辑上把窗口系统分成2层:窗口服务器和客户端,如图5所示。外部消息(用户按键、数据更新等)首先传递给窗口服务器,然后服务器把消息传发给当前活跃窗口,活跃窗口根据消息类别进行相应处理;另外,活跃窗口也可以向服务器发出请求,如切换窗口等。

    图5窗口服务器与客户端

    在GUI设计中消息是各种对象通信的重要机制,窗口之间通信的种类繁多,如果对消息进行编码呢?图6显示了一种参考方式。消息本质上就是一个32位整数,其实很多RTOS消息传递也是这个类型。取低8位为事件编码,高24位为类型编码。[4]

    任一类型最大支持256个事件,类型编码仅能一位为1,否则将引起事件判断错误。当编码正确时,类型一定是2的整幂次,因此可以使用检查整幂次方的算法来检测消息正确性。

    设uMsg是消息数值,则有:

    uTemp = uMsg & 0xFFFFFF00UL; /*取类型编码值*/

    if (0 == (uTemp & (uTemp - 1)))编码正确

    else 编码错误

    图6消息编码

     

    5窗口系统与交互

    用面向对象的方式来设计窗口如图7所示,每个窗口都有自己的ID,同时有其周围邻居窗口的ID值用于窗口切换;私有数据空间用于窗口的个性化定值。窗口对象包含3个方法:Init()用于绘制窗口和初始化窗口资源;ProcMsg()处理所有传递到本窗口的消息;Close()关闭窗口同时释放资源。

     

    图7窗口对象设计

    把多个窗口的指针组织成数组就形成了图8所示的窗口对象群,这样一来方便窗口的寻址。

     

    图8窗口对象群

    图9显示了窗口与邻居窗口的关系,如果当前活跃窗口为11,响应用户按键上/下/左/右来切换窗口时,可以直接取对应邻居窗口的ID,这样操作带来极大的便捷性。

     

    图9窗口与邻居窗口寻址

     

    6 状态栏实现

    状态栏一般位于窗口的最底部,它的典型结构如图10所示。它一般提供如下方法:

    Init():初始化状态栏对象;

    Visible():显示状态栏对象,实时响应外部消息;

    Invisible():不再显示状态栏对象,忽略外部消息;

    ChangeLinkStat():更新联机/脱机状态;

    UpdateDate():更新当前日期

    UpdateTime():更新当前时间

    私有显示空间是提供给窗口进行个性化定制,它的原则是:无论哪个窗口使用,都是“谁分配,谁回收”,即当该窗口关闭时需要清除它在私有显示空间的所有显示内容。

     

    图10 状态栏

     

    7 结束语

    本文设计的轻量级嵌入式GUI已经在某工业控制产品中稳定使用多年,该产品选用TRULY公司320x240像素的LCD。采用分层与面向对象的设计,使软件系统容易移植和开发;简单化的设计使系统异常稳定;另外占用资源很少,这是商业GUI无法比拟的。在此基础上还能扩展更高级的图形控件功能,可以参见姊妹篇《轻量级嵌入式GUI高级功能实现》。

    该GUI设计原理和源代码可以从“我的资源”中免费下载,链接地址:http://download.csdn.net/detail/jiangjunjie_2005/9508662

     

    参 考 文 献

    [1] TRULY公司. MST-G320240DBSW-75W-E Specification. Version:1.0 October 23, 2007.

    [2] TCC公司. 液晶显示模块使用手册。版本:V3.2 2009/11/01.

    [3] Steve McConnell. Code Complete. Second Edition. 金戈等译。电子工业出版社,2006.3.

    [4] David E. Simon 嵌入式系统软件教程.陈向群 等译. 机械工业出版社. 2005.9

     

    展开全文
  • VagrantGui - 一个简单的 Vagrant 控制工具 介绍 VagrantGui 旨在成为 Windows 上 Vagrant 虚拟机的简单控件。 它是用 C# 和 Visual Studio 2013 编写的,代码在 GPLv3 下获得许可。 有关许可的更多信息,请阅读 ...
  • FLTK--轻量级C++跨平台GUI

    千次阅读 2020-06-08 17:25:29
    FLTK FLTK(Fast Light Toolkit)是一个跨平台的C++GUI工具集,用...FLTK具有体积、速度快和良好移植性等优点。 FLTK当前的稳定版(1.3.5)采用LGPL发布,意味着可以通过类库引用的方式(前提是不对FLTK本身代码进行

    FLTK

    FLTK(Fast Light Toolkit)是一个跨平台的C++GUI工具集,用在UNIX/Linux(X11)、微软Windows和Mac OS X上。FLTK提供现代的GUI功能,除却膨胀,通过OpenGL和内建的GLUT模拟器提供3D图形支持。最初由Bill Spitzak开发,当前由全世界一小组开发者使用美国一个中心仓库维护。

    FLTK具有体积小、速度快和良好移植性等优点

    FLTK当前的稳定版(1.3.5)采用LGPL发布,意味着可以通过类库引用的方式(前提是不对FLTK本身代码进行修改)用于任何用途(包括商业用途)。

    FLTK的官网是https://www.fltk.org/,里面可以下载到源代码和教程,这里也有一份PDF版FLTK 1.3.5版教程(英文)。

    在Linux下,一般可以通过对应Linux版本的包管理器安装,例如在Manjaro下可以通过下列命令来安装:

    sudo pacman -S fltk
    

    在其余系统中安装可以按照文档说明进行。

    以下是一个FLTK的官方示例(保存为a.cpp):

    #include <FL/Fl.H>
    #include <FL/Fl_Window.H>
    #include <FL/Fl_Box.H>
    int main(int argc, char **argv) {
        Fl_Window *window = new Fl_Window(340,180);
        Fl_Box *box = new Fl_Box(20,40,300,100,"Hello, World!");
        box->box(FL_UP_BOX);
        box->labelfont(FL_BOLD+FL_ITALIC);
        box->labelsize(36);
        box->labeltype(FL_SHADOW_LABEL);
        window->end();
        window->show(argc, argv);
        return Fl::run();
    }
    

    用以下命令进行编译并运行(这里用GCC编译):

    g++ a.cpp -o a -lfltk;./a
    

    此时应该可以看到以下画面:
    hello_cxx
    相关链接
    专栏:FLTK

    展开全文
  • YOXIOS 入门教程--基于Linux的 轻量GUI图形系统和硬件平台.7z
  • supportxmr-gui是用于的轻量级,低资源池UI()。 它是基于javascript的,并且自包含在4个文件和favicon中。 缩小后,总磁盘大小为76KB,没有外部依赖性。 页面加载性能规格(单个工作人员): supportxmr-gui 旧...
  • KR Jr GUI是用于旧PC的轻量GUI,即使在具有1mb RAM且没有HD的386中也可以运行,它可以放在软盘上! 回收旧PC!
  • 轻量级嵌入式GUI高级功能实现.docx
  • FUGE是一个轻量级的GUI库,主要用于游戏和游戏开发工具中。 支持图形渲染器适配,实时布局编辑,XML序列化,配色方案。 文档包含带有示例的教程。 在MS Windows和Linux上可用。
  • 项目名称 让代理 ... 这个想法是,您可以让内部网站在不使用SSL的情况下工作,但只能通过外部的SSL连接来工作。 实习者。 正在安装 首先让我们安装nvm ...注销SSH会话,然后再次登录以使nvm命令可用。...
  • 不过后来发现轻量的暂时已经满足我的需求了,所有就没有重新买了。 二、入手阿里云轻量应用服务器 2.1 进入阿里官网 https://www.aliyun.com/ 将鼠标放置于“蓝色三杆” -> 放置于产品 -> 置于云计算基础 -> ...
  • catui:Löve2D的非常轻量级的GUI
  • 它旨在与远程bitmonerod节点一起使用,因此对于大多数用户而言,它可以充当轻量级钱包。 默认情况下,它使用Atrides开放节点,但是您可以在My Documents / lightWallet目录中存储的CONFIG.file中更改它使用的节点;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,964
精华内容 13,185
关键字:

gui小轻量