zoukankan      html  css  js  c++  java
  • 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
    ", __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进行必要的额外操作。


        欲看效果怎样。且听下回分解。




  • 相关阅读:
    LA 2038 Strategic game(最小点覆盖,树形dp,二分匹配)
    UVA 10564 Paths through the Hourglass(背包)
    Codeforces Round #323 (Div. 2) D 582B Once Again...(快速幂)
    UVALive 3530 Martian Mining(贪心,dp)
    UVALive 4727 Jump(约瑟夫环,递推)
    UVALive 4731 Cellular Network(贪心,dp)
    UVA Mega Man's Mission(状压dp)
    Aizu 2456 Usoperanto (贪心)
    UVA 11404 Plalidromic Subsquence (回文子序列,LCS)
    Aizu 2304 Reverse Roads(无向流)
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5215046.html
Copyright © 2011-2022 走看看