ftk学习记(label篇)【转】
转自:http://blog.csdn.net/feixiaoxing/article/details/25000093
版权声明:本文为博主原创文章,未经博主允许不得转载。
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
还是接着上面的一篇博文。之前曾经答应过大家,让大家看一下最简单的ftk程序是怎么运行的。所以,这里我们上传一下图片。
因为还是编辑模式,所以暂时还不能看到图片在网页中是怎么显示的。不过没有关系,这次只是做一个最初的尝试。如果大家有更好的意见,不妨用微信扫一下头像或者私信给我,就可以了。
前面的代码还是比较简单的。今天,我们来学习一下label的显示方法。当然,不管大家是做windows phone、Android app、iOS,如何编写gui都是一个基本功课。这些gui显示的方法大同小异。如果有心学习一下ftk,其他的移动app相信也不在话下。不过,因为移动应用开发的语言不太一样,有c sharp, 有Java,有object c,所以差异性多少还是有点的。
label,顾名思义,就是一个标签。更直白一点,就是在窗口上某个地点显示一串文字。当然,你可以根据自己的需要灵活修改文字的类型、大小、颜色、背景等信息,总之就是这么个意思。闲话少说,我们可以看看demo下label代码是怎么编写的。同样,今天只会展示代码的内容,具体显示的效果还要等待下面一篇文章。
- #include "ftk.h"
- typedef struct _TimerInfo
- {
- int times;
- FtkWidget* label;
- }TimerInfo;
- static Ret timeout(void* ctx)
- {
- TimerInfo* info = ctx;
- char buffer[32] = {0};
- if(info->times > 0)
- {
- snprintf(buffer, sizeof(buffer), "Quit after %d seconds", info->times);
- ftk_widget_set_text(info->label, buffer);
- info->times--;
- return RET_OK;
- }
- else
- {
- ftk_quit();
- ftk_logd("%s: timeout and quit.\n", __func__);
- return RET_REMOVE;
- }
- }
- int main(int argc, char* argv[])
- {
- int width = 0;
- int height = 0;
- FtkGc gc = {.mask = FTK_GC_BG};
- TimerInfo info = {.times=5, };
- ftk_init(argc, argv);
- FtkSource* timer = ftk_source_timer_create(1000, timeout, &info);
- FtkWidget* win = ftk_app_window_create();
- width = ftk_widget_width(win);
- height = ftk_widget_height(win);
- FtkWidget* label = ftk_label_create(win, 10, 10, width - 20, 20);
- ftk_widget_set_text(label, "中文文本");
- label = ftk_label_create(win, 10, 40, width - 20, 20);
- ftk_widget_set_text(label, "English Text");
- assert(strcmp(ftk_widget_get_text(label), "English Text") == 0);
- gc.bg.a = 0xff;
- gc.bg.r = 0xF0;
- gc.bg.g = 0xF0;
- gc.bg.b = 0x80;
- label = ftk_label_create(win, 10, height/2, width - 20, 120);
- ftk_widget_set_gc(label, FTK_WIDGET_INSENSITIVE, &gc);
- ftk_widget_unset_attr(label, FTK_ATTR_TRANSPARENT);
- ftk_widget_set_text(label, "中英文混合多行文本显示:the linux mobile development.带有背景颜色。");
- label = ftk_label_create(win, 50, height/2-30, width, 20);
- info.label = label;
- ftk_widget_set_text(win, "label demo");
- ftk_widget_show_all(win, 1);
- ftk_widget_set_attr(win, FTK_ATTR_IGNORE_CLOSE);
- ftk_main_loop_add_source(ftk_default_main_loop(), timer);
- ftk_run();
- return 0;
- }
代码的内容,不是很多,大约有个70行左右。开始,同样首先初始化ftk,调用了ftk_init函数。在函数结尾的地方,代码也调用了ftk_run函数。这些都是代码的基本流程。只要你是用的是ftk,都需要遵守这个流程。中间的内容都是自己添加的。
继续分析,我们观察一下,代码都做了些什么。细细想来,其实逻辑都差不多。依次往下看,代码创建了一个win控件,进而在win上插入了4个label控件。它们分别是中文文本、English
Text、中英文混合多行文本显示、临时label。除此之外,代码中还出现了一个timer,每隔一段时间,它都会调用timeout这个函数。这个函数做了什么啊,从10行开始往下看。其实就是定时显示一段文字,告诉我们窗口离quit还有几秒。如果超时了呢,当然就会调用ftk_quit这个函数,ftk在释放完一些资源后就结束了。
这个流程不复杂。还没有搞清楚的朋友可以继续看一下代码。下次,再公布代码的运行效果。
ftk学习记(label篇)【转】的更多相关文章
- ftk学习记(label篇)
[ 声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 还是接着上面的一篇博文. 之前以前答应过大家,让大家看一下最简单的ftk程序是怎么执行的.所以 ...
- ftk学习记(消息框篇)
[ 声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 上一篇说到了输入框.闲话不多说,首先看结果显示, 大家看看效果是不是和我们之前说的一样.今天, ...
- ftk学习记(首篇)
[ 声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 非常早之前就知道ftk了,当时主要是由于买了李先静的书,所以知道了这么一个项目.由于对这样的g ...
- ftk学习记(icon篇)
[声明:版权全部,欢迎转载.请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在開始今天的文章之前.我们还是先看一下上一节的效果图. 大家能够參照上一节的解说,是不是存在这种 ...
- ftk学习记(对话框篇)
[声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前面谈到了输入法,首先看一看效果. 上面有4个输入框,大家能够分别试试,看看效果怎样. 今天,我 ...
- ftk学习记(滑动条篇)
[声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前一篇说到了combox.就先看一下效果吧. 说完了combox,就谈谈今天的滑动条.滑动条,当然 ...
- ftk学习记(combox篇)
[声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 上一篇文章谈到了多窗体,还是依照约定看一下效果是什么样的. 假设大家细心一点.就会发现窗体中的l ...
- ftk学习记(输入框篇)
[ 声明:版权全部.欢迎转载.请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 昨天讲了进度条,我们还是看看它的运行效果是怎么样的.截图例如以下, 进度条使用的情况还是比較多的 ...
- ftk学习记(waitbox篇)
[声明:版权全部.欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前面说到了脚本.那么就看看ftk中demo与script搭配的效果是什么样的? 上面的效果图就相 ...
随机推荐
- jQuery实现复选框的全选、反选功能
<ul id="list"> <li><label><input type="checkbox" value=&quo ...
- vue 判断是否登录,未登录跳转到登录页
网页一进入判断是否登录,未登录跳转到登录页面 router.js export default new Router({ routes: [ { path: '/', name: 'HelloWorl ...
- java util - Hex转换工具
测试代码 package cn.java.codec.hex; public class Test { public static void main(String[] args) { String ...
- HDU - 6514 Monitor(二维差分)
题意 给定一个\(n×m\)的矩阵.(\(n×m <= 1e7\)). \(p\)次操作,每次可以在这个矩阵中覆盖一个矩形. \(q\)次询问,每次问一个矩形区域中,是否所有的点都被覆盖. 解析 ...
- 51nod_1154 回文串的划分
说实话..最开始看这题感觉一定好难...好高大上...我的马拉车还不熟....这种..但是本着做不出来也要至少看看的心态,吧个题看完了..然后简单的想了想,好像是个挺直观的动态规划,因为看到数据几乎就 ...
- Linux 用户行为日志记录
工作中我们常常遇到,有的员工不安于被分配的权限,老是想sudo echo "ziji" /usr/bin/visudo NOPASSWD:ALL来进行提权,造成误删了数据库某条重要 ...
- Spark性能优化:shuffle调优
调优概述 大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO.序列化.网络数据传输等操作.因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行 ...
- WinRM和WinRS
1.6.2 新远程工具:WinRM和WinRS 2012-05-14 10:18 张杰良 译 清华大学出版社 字号:T | T 综合评级: 想读(18) 在读(5) 已读(0) 品书斋鉴(0) ...
- RSA进阶之维纳攻击(wiener-attack )
维纳攻击: 场景:e很大 例题: 第七届山东网络安全技能大赛 链接:https://pan.baidu.com/s/1IRInw3pB7SQfp3MxRJW17A 提取码:lcn3 e很大,妥了,维纳 ...
- [oldboy-django][2深入django]班级管理(Form)--编辑
1.需求:编辑班级,难点:点击编辑按钮后,页面如何显示 待编辑 班级的信息(用Form实现), 以及Url 设置 2 url url(r'^edit_class/nid=(?P<nid>\ ...