【聲明:版權所有,歡迎轉載。請勿用於商業用途。 聯繫信箱:feixiaoxing @163.com】app
在開始今天的文章以前。咱們仍是先看一下上一節的效果圖。函數
你們可以參照上一節的解說,是否是存在這種button,是否是存在這種wait_box控件,相同是否是可以看到wait_box活動的情形。固然,有條件的朋友最好本身編譯一下這個demo代碼。按步驟調試每一行代碼。學習
今天,如標題所看到的。咱們所學習的是icon的內容。簡單一點說,這次基本的目的就是想在窗體上顯示icon圖像的內容。ui
至於怎樣顯示,你們可以跟着我一塊兒看一下demo代碼是怎樣編寫的。spa
#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而已。code
固然,每個item在被選中的時候。系統都會調用call back函數item_clicked進行必要的額外操做。對象
欲看效果怎樣。且聽下回分解。blog