ftk学习记(icon篇)
【声明:版权全部,欢迎转载。请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
在開始今天的文章之前。我们还是先看一下上一节的效果图。
大家能够參照上一节的解说,是不是存在这种button,是不是存在这种wait_box控件,相同是不是能够看到wait_box活动的情形。当然,有条件的朋友最好自己编译一下这个demo代码。按步骤调试每一行代码。
今天,如标题所看到的。我们所学习的是icon的内容。简单一点说,此次基本的目的就是想在窗体上显示icon图像的内容。
至于怎样显示,大家能够跟着我一起看一下demo代码是怎样编写的。
#include "ftk.h" #define IDC_TEST_BUTTON 1000
static Ret button_quit_clicked(void* ctx, void* obj)
{
ftk_quit(); return RET_OK;
} static int i = 0;
static Ret button_more_clicked(void* ctx, void* obj)
{
int j = 0;
FtkIconViewItem item;
FtkWidget* icon_view = ftk_widget_lookup(ctx, 100);
item.icon = ftk_theme_load_image(ftk_default_theme(), "flag-32.png"); for(j=0; j < 4; j++)
{
char text[100] = {0};
ftk_snprintf(text, sizeof(text), "%d", i);
item.text = text;
ftk_bitmap_ref(item.icon);
item.user_data = (void*)i;
ftk_icon_view_add(icon_view, &item);
i+=1000;
}
ftk_bitmap_unref(item.icon); return RET_OK;
} static Ret item_clicked(void* ctx, void* obj)
{
FtkIconViewItem* item = obj; ftk_logd("%s: %s: user_data=%d\n", __func__, item->text, item->user_data); return RET_OK;
} int FTK_MAIN(int argc, char* argv[])
{
int width = 0;
int height = 0;
FtkWidget* win = NULL;
FtkWidget* button = NULL;
FtkWidget* icon_view = NULL;
FtkIconViewItem item;
ftk_init(argc, argv); win = ftk_app_window_create();
width = ftk_widget_width(win);
height = ftk_widget_height(win); button = ftk_button_create(win, 10, 0, width/3-10, 60);
ftk_widget_set_text(button, "more");
ftk_button_set_clicked_listener(button, button_more_clicked, win);
ftk_window_set_focus(win, button); button = ftk_button_create(win, 2*width/3, 0, width/3-10, 60);
ftk_widget_set_text(button, "quit");
ftk_button_set_clicked_listener(button, button_quit_clicked, win);
ftk_window_set_focus(win, button); item.icon = ftk_theme_load_image(ftk_default_theme(), "flag-32.png");
icon_view = ftk_icon_view_create(win, 5, 70, width-10, height-80);
ftk_widget_set_id(icon_view, 100);
ftk_icon_view_set_clicked_listener(icon_view, item_clicked, win);
for(; i < 4; i++)
{
char text[100] = {0};
ftk_snprintf(text, sizeof(text), "%d", i);
item.text = text;
item.user_data = (void*)i;
ftk_icon_view_add(icon_view, &item);
} ftk_bitmap_unref(item.icon);
ftk_widget_set_text(win, "icon view demo");
ftk_widget_show_all(win, 1);
ftk_widget_set_attr(win, FTK_ATTR_QUIT_WHEN_CLOSE); ftk_run(); return 0;
}
如代码所看到的,系统在进行的必要的初始化之后,就立即创建了button控件、 icon_view、item等对象。
button对象,我们之前已经讨论过非常多次了,这次忽略不考虑。此次主要学习的是icon_view这个对象。它的主要目的就是在window中创建一片icon_view空间。创建成功之后。我们就能够通过函数ftk_icon_view_add向里面加入item对象了。是不是非常easy呢?那button这里是起什么作用呢,我们能够继续往下看。假设细致看一下,大家能够发现button_more_clicked中的内容和main函数中的内容差点儿相同,无非就是向icon_view对象中多加入了几个item而已。
当然,每一个item在被选中的时候。系统都会调用call back函数item_clicked进行必要的额外操作。
欲看效果怎样。且听下回分解。
ftk学习记(icon篇)的更多相关文章
- ftk学习记(消息框篇)
[ 声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 上一篇说到了输入框.闲话不多说,首先看结果显示, 大家看看效果是不是和我们之前说的一样.今天, ...
- ftk学习记(label篇)【转】
转自:http://blog.csdn.net/feixiaoxing/article/details/25000093 版权声明:本文为博主原创文章,未经博主允许不得转载. [ 声明:版权所有,欢迎 ...
- ftk学习记(label篇)
[ 声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 还是接着上面的一篇博文. 之前以前答应过大家,让大家看一下最简单的ftk程序是怎么执行的.所以 ...
- ftk学习记(首篇)
[ 声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 非常早之前就知道ftk了,当时主要是由于买了李先静的书,所以知道了这么一个项目.由于对这样的g ...
- ftk学习记(对话框篇)
[声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前面谈到了输入法,首先看一看效果. 上面有4个输入框,大家能够分别试试,看看效果怎样. 今天,我 ...
- ftk学习记(list篇)
[声明:版权全部,欢迎转载.请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在開始今天的list主题之前,先看一下icon的执行效果. 今天说的list事实上和这个icon几 ...
- ftk学习记(滑动条篇)
[声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前一篇说到了combox.就先看一下效果吧. 说完了combox,就谈谈今天的滑动条.滑动条,当然 ...
- ftk学习记(输入框篇)
[ 声明:版权全部.欢迎转载.请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 昨天讲了进度条,我们还是看看它的运行效果是怎么样的.截图例如以下, 进度条使用的情况还是比較多的 ...
- ftk学习记(waitbox篇)
[声明:版权全部.欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前面说到了脚本.那么就看看ftk中demo与script搭配的效果是什么样的? 上面的效果图就相 ...
随机推荐
- nyoj 1238 最少换乘(dijkstra)
描述 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. 年轻人旅游不怕辛苦,不怕劳累,只要费用低就行.但Dr. Kong年过半百,他希望乘坐 ...
- Android Studio Build选项的功能
再开发过程中出现了如下错误: 无论如何clean,或者删除项目中build文件夹,Rebuild Project还是报错. 解决方案:Make Project 后出现有代码报错.修复代码问题,运行项目 ...
- 最新首发Eclipse+CDT+android-ndk写纯c++安卓应用(附openGL Es)
首先下载eclipse和cdt.我的版本依次是:Version: Indigo Service Release 2和Version: 1.0.0.201202111925,再下载windows的ndk ...
- and then set HOMEBREW_GITHUB_API_TOKEN.
andyMacBook-Pro:~ andy$ brew search redis hiredis redis homebrew/nginx/redis2-nginx-module Error: ...
- JAVA Socket地址绑定
Socket常用有惨构造方法有如下: Socket(InetAddress address, int port) Socket(InetAddress address, int port, InetA ...
- PHP自学4——通过函数将数组数据输出到html的Table标签中(使用函数的例子)
这一节其实说实话并没有什么干货,不过为了防止PO主的懒癌的复发,还是坚持放一点东西,即使是内容和长度都令人发指.这一节通过一个函数来实现将数组中的内容输出html的Table标签当中显示. 函数文件— ...
- 关于constructor与 Prototype的理解
constructor:每一个函数的Prototype属性指向的对象都包含唯一一个不可枚举属性constructor,该属性的值是这么一个对象:constructor指向了它所在的构造函数Protot ...
- Equal 和==比较
Equal 和==比较 ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相当,只能用==操作符. 如果一个变 ...
- MongoDB 操作
通过CMD命令操作数据 确保MongoDB的服务已经正常安装,记下安装目录(D:\MongoDB\Service) 然后打开cmd 先转到D盘 cd D: 然后转到服务的安装目录下 cd D:\Mon ...
- MVC 使用PageList进行分页
1.新建MVC项目 2.在Web项目下添加PagedList nuget 命令 :install-package pagedlist.mvc 在安装完成之后,会在Content下添加PagedList ...