首页 > 其他分享 >ftk学习记(多窗口篇)

ftk学习记(多窗口篇)

时间:2022-11-23 12:07:17浏览次数:45  
标签:widget win void 多窗口 学习 window ftk button


    在上周末的博客中,我们谈到了list view,今天可以看看效果图如何。


ftk学习记(多窗口篇)_多窗口


    如果大家细心一点,可以发现list中的item有点差异,有兴趣的朋友可以思考一下原因是什么,其实可以代码中看出来的。今天,我们聊的是多窗口的问题。大多数app,很少是一个窗口上完成所有的功能的。闲话不多说,先看代码。



#include "ftk.h"

static void create_app_window(void);
static Ret button_open_clicked(void* ctx, void* obj)
{
create_app_window();

return RET_OK;
}

static Ret button_close_clicked(void* ctx, void* obj)
{
FtkWidget* win = ctx;
ftk_logd("%s: close window %s\n", __func__, ftk_widget_get_text(win));
ftk_widget_unref(win);

return RET_OK;
}

static int g_index = 0;
static void on_window_close(void* user_data)
{
g_index--;

ftk_logd("%s: g_index=%d\n", __func__, g_index);
if(g_index == 0)
{
ftk_quit();
}

return ;
}


static void create_app_window(void)
{
char title[32] = {0};
int width = 0;
int height = 0;
FtkWidget* win = ftk_app_window_create();
FtkWidget* label = NULL;
FtkWidget* button = NULL;

width = ftk_widget_width(win);
height = ftk_widget_height(win);

button = ftk_button_create(win, 0, height/6, width/3, 50);
ftk_widget_set_text(button, "创建窗口");
ftk_button_set_clicked_listener(button, button_open_clicked, win);

button = ftk_button_create(win, 2*width/3, height/6, width/3, 50);
ftk_widget_set_text(button, "关闭窗口");
ftk_button_set_clicked_listener(button, button_close_clicked, win);

snprintf(title, sizeof(title), "window%02d", g_index++);
label = ftk_label_create(win, width/4, height/2, width/2, 30);
ftk_widget_set_text(label, title);

ftk_widget_set_text(win, title);
ftk_widget_show_all(win, 1);
ftk_widget_set_user_data(win, on_window_close, win);

return;
}

int main(int argc, char* argv[])
{
ftk_init(argc, argv);

create_app_window();

ftk_run();

return 0;
}


    从代码中,大家可以发现出现了流程中出现了一个create_app_window这个函数。这个函数不仅出现在系统初始的流程中,而且出现在button_open_clicked这个函数中。这说明系统在初始运行的时候,就会创建一个窗口,而且以后每次单击“创建窗口”按钮的时候,也会在当前的窗口之上增加一个窗口。当然如果想关闭当前窗口,直接单击“关闭窗口”这个按钮就可以了。


    闲话不多说,下次上效果图。




标签:widget,win,void,多窗口,学习,window,ftk,button
From: https://blog.51cto.com/feixiaoxing/5880803

相关文章

  • ftk学习记(combox篇)
      上一篇文章谈到了多窗口,还是按照约定看一下效果是什么样的。  如果大家细心一点,就会发现窗口中的label显示为window01,这其实是因为我们已经增加了一个窗口,有兴趣......
  • ftk学习记(list篇)
      在开始今天的list主题之前,先看一下icon的运行效果。  今天说的list其实和这个icon差不多。大家只需要把这些icon想像成一条一条的item就可以了。同样,list的demo代......
  • ftk学习记(脚本篇)
      上一篇说到了对话框,今天就看看结果。  对话框不复杂,今天我们就来谈一谈脚本。有过android开发经验的朋友都知道,要想开发app,除了需要编写必要的代码,还需要编写一些......
  • ftk学习记(icon篇)
      在开始今天的文章之前,我们还是先看一下上一节的效果图。  大家可以参照上一节的讲解,是不是存在这样的button,是不是存在这样的wait_box控件,同样是不是可以看到wait......
  • ftk学习记(waitbox篇)
      前面说到了脚本,那么就看看ftk中demo与script搭配的效果是什么样的?  上面的效果图就类似于一个通讯录的输入功能,大家可以和之前的脚本对照起来看,检查一下是不是这......
  • ftk学习记(对话框篇)
      前面谈到了输入法,首先看一看效果。  上面有4个输入框,大家可以分别试试,看看效果如何。  今天,我们要说的是对话框。直接看demo代码好了,#include"ftk.h"static......
  • ftk学习记(输入法篇)
      前面说的是全屏设置,还是请大家看一下效果图。  想看全屏效果的,可以单击一下左边的button。如果恢复到原来的结果呢,单击一下右边的button。  所以这个demo其实......
  • ftk学习记(窗口全屏设置篇)
         好久不写博客了,今天续上。但是,我们还是看一下上一期的运行结果,  上面窗口中有5个button,有机会的朋友可以编译、运行一把。  今天,我们的文章比较简单,也......
  • ftk学习记(消息框篇)
      上一篇说到了输入框。闲话不多说,首先看结果显示,  大家看看效果是不是和我们之前说的一样。今天,我们谈一下消息狂。这种消息框其实应用得特别多,有警告用的,有提问的......
  • ftk学习记(进度条篇)
      首先,在开始今天的文章之前,我们还是给朋友们展示一下前面一段代码的运行效果。效果如下,  有兴趣的朋友可以找到这段代码,看一下运行的效果如何。  今天,我们可以......