转自: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代码是怎么编写的。同样,今天只会展示代码的内容,具体显示的效果还要等待下面一篇文章。

[cpp] view plaincopy 
  1. #include "ftk.h"
  2. typedef struct _TimerInfo
  3. {
  4. int times;
  5. FtkWidget* label;
  6. }TimerInfo;
  7. static Ret timeout(void* ctx)
  8. {
  9. TimerInfo* info = ctx;
  10. char buffer[32] = {0};
  11. if(info->times > 0)
  12. {
  13. snprintf(buffer, sizeof(buffer), "Quit after %d seconds", info->times);
  14. ftk_widget_set_text(info->label, buffer);
  15. info->times--;
  16. return RET_OK;
  17. }
  18. else
  19. {
  20. ftk_quit();
  21. ftk_logd("%s: timeout and quit.\n", __func__);
  22. return RET_REMOVE;
  23. }
  24. }
  25. int main(int argc, char* argv[])
  26. {
  27. int width = 0;
  28. int height = 0;
  29. FtkGc gc = {.mask = FTK_GC_BG};
  30. TimerInfo info = {.times=5, };
  31. ftk_init(argc, argv);
  32. FtkSource* timer = ftk_source_timer_create(1000, timeout, &info);
  33. FtkWidget* win = ftk_app_window_create();
  34. width = ftk_widget_width(win);
  35. height = ftk_widget_height(win);
  36. FtkWidget* label = ftk_label_create(win, 10, 10, width - 20, 20);
  37. ftk_widget_set_text(label, "中文文本");
  38. label = ftk_label_create(win, 10, 40, width - 20, 20);
  39. ftk_widget_set_text(label, "English Text");
  40. assert(strcmp(ftk_widget_get_text(label), "English Text") == 0);
  41. gc.bg.a = 0xff;
  42. gc.bg.r = 0xF0;
  43. gc.bg.g = 0xF0;
  44. gc.bg.b = 0x80;
  45. label = ftk_label_create(win, 10, height/2, width - 20, 120);
  46. ftk_widget_set_gc(label, FTK_WIDGET_INSENSITIVE, &gc);
  47. ftk_widget_unset_attr(label, FTK_ATTR_TRANSPARENT);
  48. ftk_widget_set_text(label, "中英文混合多行文本显示:the linux mobile development.带有背景颜色。");
  49. label = ftk_label_create(win, 50, height/2-30, width, 20);
  50. info.label = label;
  51. ftk_widget_set_text(win, "label demo");
  52. ftk_widget_show_all(win, 1);
  53. ftk_widget_set_attr(win, FTK_ATTR_IGNORE_CLOSE);
  54. ftk_main_loop_add_source(ftk_default_main_loop(), timer);
  55. ftk_run();
  56. return 0;
  57. }

代码的内容,不是很多,大约有个70行左右。开始,同样首先初始化ftk,调用了ftk_init函数。在函数结尾的地方,代码也调用了ftk_run函数。这些都是代码的基本流程。只要你是用的是ftk,都需要遵守这个流程。中间的内容都是自己添加的。

继续分析,我们观察一下,代码都做了些什么。细细想来,其实逻辑都差不多。依次往下看,代码创建了一个win控件,进而在win上插入了4个label控件。它们分别是中文文本、English Text、中英文混合多行文本显示、临时label。除此之外,代码中还出现了一个timer,每隔一段时间,它都会调用timeout这个函数。这个函数做了什么啊,从10行开始往下看。其实就是定时显示一段文字,告诉我们窗口离quit还有几秒。如果超时了呢,当然就会调用ftk_quit这个函数,ftk在释放完一些资源后就结束了。

这个流程不复杂。还没有搞清楚的朋友可以继续看一下代码。下次,再公布代码的运行效果。

本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/6803504.html,如需转载请自行联系原作者

ftk学习记(label篇)【转】相关推荐

  1. ftk学习记(脚本篇)

    [声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 上一篇说到了对话框,今天就看看结果. 对话框不复杂,今天我们就来谈一谈脚本.有过android开 ...

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

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

  3. ftk学习记(button篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前面,我们说到了label,这里可以看一下label运行的效果是怎么样的. 大家可以对照上面的 ...

  4. ftk学习记(首篇)

    [ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 非常早之前就知道ftk了,当时主要是由于买了李先静的书,所以知道了这么一个项目.由于对这样的g ...

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

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

  6. ftk学习记(combox篇)

    [声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 上一篇文章谈到了多窗口,还是按照约定看一下效果是什么样的. 如果大家细心一点,就会发现窗口中的l ...

  7. ftk学习记(多窗口篇)

    [声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在上周末的博客中,我们谈到了list view,今天可以看看效果图如何. 如果大家细心一点,可以 ...

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

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

  9. ftk学习记(image显示篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前面说到了scroll bar,下面还是首先看一下效果图. 说完了滑动条.下面就来谈一谈ima ...

最新文章

  1. iOS开发 - 百度地图后台持续定位
  2. 【Android RTMP】x264 图像数据编码 ( NV21 格式中的 YUV 数据排列 | Y 灰度数据拷贝 | U 色彩值数据拷贝 | V 饱和度数据拷贝 | 图像编码操作 )
  3. 在线html5 api中文版,HTML5+ API Reference
  4. Even Substrings
  5. GDCM:gdcm::DirectionCosines的测试程序
  6. android ndk调用出错,由于Android-NDK应用程序的权限问题,为什么fopen在本地方法中失败?...
  7. 来自爸妈的敷衍问候!| 今日最佳
  8. c语言分量的运算符,C语言基础(04-运算符和表达式)
  9. html5点击事件_lt;dialoggt; | HTML5 对话框标签
  10. mysql存储过程 try_mysql存储过程之异常处理篇
  11. 程序员不加班你还想干嘛?
  12. 发票编号识别、验证码识别 ,图像分割
  13. 西安工程大学计算机是几本专业,西安工程大学专业介绍
  14. opencv 图像卷积运算函数filter2D()
  15. jdk和tomcat环境变量批处理(.bat)
  16. php编译后漏掉一些参数怎么办
  17. 计算机跨专业考会计专硕,二本二战三跨如何考上985会计专硕之数学篇
  18. linux 桌面版 黑屏,安装ubuntu时黑屏的解决办法(3种)
  19. android ndk 下载安装(ubuntu)
  20. win7美化_桌面美化之 windows10

热门文章

  1. KindEditor富文本编辑器【图片、视频等功能的富文本编辑器】
  2. 苹果字体怎么改_苹果手机的APPLE ID密码忘了怎么改?
  3. 真正的高手,都在培养系统
  4. unp第一章的测试代码
  5. 滁州学院计算机系录取,2021年滁州学院各省各专业最低投档录取分数线统计(文科 理科)...
  6. 软件项目管理知识回顾---挣值
  7. Matlab建模—无约束优化与非线性规划相关算例
  8. 程序员c语言基础,《软考程序员》C语言基础
  9. 已面世两年 大疆精灵4 Pro V2.0为什么仍是最受欢迎的无人机之一?
  10. postgresql自定义函数实现,通过contrib模块进行扩展