【 声明:版权全部,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

非常早之前就知道ftk了,当时主要是由于买了李先静的书,所以知道了这么一个项目。由于对这样的gui的代码非常感兴趣。所以在我闲暇的时候也会拿来看一看。从整个project来看,代码非常工整。平台移植也方便。所以有兴趣的同学能够看一看。

一般对于一个开源项目。要深入地參与当中都要经历几个过程,这各自是使用、阅读、改动、重构。

大多数公司里面也会使用到开源项目,可是往往停留在使用的阶段。

所以。假设希望有深入了解的朋友还是须要自己腾出时间来好好研究一番才行。

网上下载ftk的地方非常多,大家能够从code.google.com上面查找下载就可以。对于ftk。大家能够理解成一个lib程序库,假设要想非常好地使用它,那么一方面须要对底层的驱动进行移植。还有一方面须要适配到各个os平台、compiler工具等等。没有关系,作者已经帮我们弄好了,我们能够建立一个仿真平台就能够了。

今天,我们不打算从编译、调试的角度来看ftk,而是从一个最简单的使用者来看怎么调用ftk。恰巧。作者也给我们提供了很多的demo代码。我们的学习最好还是就从这些demo代码開始。学习新的编程语言。大家都是从hello world開始。我们最好还是也从hello world開始ftk的学习。

由于ftk的版本号非常多,所以本章以及后面全部的文章都是依照ftk 0.4版本号作为參考使用的。

首先。须要编译ftk,

./autogen.sh
./configure --with-backend=linux-x11:320*480 --with-fontengine=freetype
make clean
make

再编写自己的代码,

#include "ftk.h"

int main(int argc, char* argv[])
{
FtkWidget* win = NULL; ftk_init(argc, argv);
win = ftk_app_window_create();
ftk_widget_set_text(win, "Hello FTK!");
ftk_widget_show(win, 1);
ftk_widget_set_attr(win, FTK_ATTR_QUIT_WHEN_CLOSE); ftk_run(); return 0;
}

这恐怕是demo中最简单的代码了。整个文件也不足20行。

关于系统的代码。事实上就两行。一行是ftk_init。另外一行是ftk_run。其它的内容都是自己编写的。整个流程非常easy。创建一个win,设置win的属性,開始while(1)执行ftk。

是不是非常easy?

假设大家有兴趣,能够好好理解一下这段代码。想看一下代码执行效果的同学,敬请期待下一篇文章。

ftk学习记(首篇)的更多相关文章

  1. ftk学习记(消息框篇)

    [ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 上一篇说到了输入框.闲话不多说,首先看结果显示, 大家看看效果是不是和我们之前说的一样.今天, ...

  2. ftk学习记(label篇)【转】

    转自:http://blog.csdn.net/feixiaoxing/article/details/25000093 版权声明:本文为博主原创文章,未经博主允许不得转载. [ 声明:版权所有,欢迎 ...

  3. ftk学习记(label篇)

    [ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 还是接着上面的一篇博文. 之前以前答应过大家,让大家看一下最简单的ftk程序是怎么执行的.所以 ...

  4. ftk学习记(icon篇)

    [声明:版权全部,欢迎转载.请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在開始今天的文章之前.我们还是先看一下上一节的效果图. 大家能够參照上一节的解说,是不是存在这种 ...

  5. ftk学习记(滑动条篇)

    [声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前一篇说到了combox.就先看一下效果吧. 说完了combox,就谈谈今天的滑动条.滑动条,当然 ...

  6. ftk学习记(输入框篇)

    [ 声明:版权全部.欢迎转载.请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 昨天讲了进度条,我们还是看看它的运行效果是怎么样的.截图例如以下, 进度条使用的情况还是比較多的 ...

  7. ftk学习记(对话框篇)

    [声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前面谈到了输入法,首先看一看效果. 上面有4个输入框,大家能够分别试试,看看效果怎样. 今天,我 ...

  8. ftk学习记(waitbox篇)

    [声明:版权全部.欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前面说到了脚本.那么就看看ftk中demo与script搭配的效果是什么样的? 上面的效果图就相 ...

  9. ftk学习记(list篇)

    [声明:版权全部,欢迎转载.请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在開始今天的list主题之前,先看一下icon的执行效果. 今天说的list事实上和这个icon几 ...

随机推荐

  1. spy++ 句柄消息详解

    使用spy++捕获到的消息详解 主要是今天正好自己用到. 原来也有用过SPY++查看消息,然后自己SendMessage或者PostMessage 直接发送消息给目标程序.但是原来一用就有效果,今天要 ...

  2. Blender插件之Panel

    目标 [x] 总结Blender之Panel 总结 Blender之Panel需要从Blender界面组成开始理解. 直观上Blender的界面层次为 Editors ‣ Regions ‣ (Tab ...

  3. springmvc-servlet.xml(springmvc-servlet.xml 配置 增强配置)

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  4. 使用BindingList来实现DataGridview数据源为list时的动态增删改

    当DataGridview的数据源list的时候,对list进行操作后重新绑定,数据并不会更新 使用BindingList能很好的解决这个问题(framework2.0新增) 例如,使用list时候的 ...

  5. ansible usually

    链接地址:https://my.oschina.net/kangvcar/blog/1830155

  6. 使用新的CSS类型对象模型

    el.attributeStyleMap.set('padding', CSS.px(42)); const padding = el.attributeStyleMap.get('padding') ...

  7. 参数转对象 类似 ?camera=1&travel=0&faceScore=1

    parseQueryString(url) { var obj = {}; var keyvalue = []; var key = "", value = "" ...

  8. Struts2学习笔记 - Part.01

    1.关于Struts2中的struts.xml文件中action设置 <!-- 它是一个通用action,此处的*表明它可以处理任意的请求--> <action name=" ...

  9. 搞不懂的算法-排序篇<2>

    上一篇排序算法<1>中,排序算法的时间复杂度从N2到NlgN变化,但他们都有一个共同的特点,基于比较和交换数组中的元素来实现排序,我们称这些排序算法为比较排序算法.对于比较排序算法,所有的 ...

  10. MySQL数据库各个版本的区别

    MySQL数据库各个版本的区别 MySQL数据库 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管 ...