好久不写博客了,今天续上。但是,我们还是看一下上一期的运行结果,
上面窗口中有5个button,有机会的朋友可以编译、运行一把。
今天,我们的文章比较简单,也算是给大家舒缓一下大脑。是否对窗口进行全屏设置,其实就是设置窗口的一个属性而已。为了达到测试目的,我们可以设置两个button,其中一个是设置全屏,另外一个就是去除全屏。ftk中关于全屏的demo代码就是这么写的。
#include "ftk.h"
#define IDC_TEST_BUTTON 1000
static Ret button_quit_clicked(void* ctx, void* obj)
{
ftk_quit();
return RET_OK;
}
static Ret button_unfullscreen_clicked(void* ctx, void* obj)
{
ftk_window_set_fullscreen(ctx, 0);
return RET_OK;
}
static Ret button_fullscreen_clicked(void* ctx, void* obj)
{
ftk_window_set_fullscreen(ctx, 1);
return RET_OK;
}
int main(int argc, char* argv[])
{
int width = 0;
int height = 0;
FtkWidget* win = NULL;
FtkWidget* button = NULL;
ftk_init(argc, argv);
win = ftk_app_window_create();
width = ftk_widget_width(win);
height = ftk_widget_height(win);
width = width/2 - 10;
button = ftk_button_create(win, 0, height/4, width, 50);
ftk_widget_set_text(button, "Fullscreen");
ftk_button_set_clicked_listener(button, button_fullscreen_clicked, win);
button = ftk_button_create(win, width + 10, height/4, width, 50);
ftk_widget_set_text(button, "Unfullscreen");
ftk_button_set_clicked_listener(button, button_unfullscreen_clicked, win);
button = ftk_button_create(win, width/2, height/2, width, 60);
ftk_widget_set_text(button, "quit");
ftk_button_set_clicked_listener(button, button_quit_clicked, win);
ftk_window_set_focus(win, button);
ftk_widget_set_text(win, "fullscreen");
ftk_widget_show_all(win, 1);
ftk_widget_set_attr(win, FTK_ATTR_QUIT_WHEN_CLOSE);
ftk_run();
return 0;
}
简单看一下代码流程。除了ftk_init和ftk_run之外,代码创建了三个button,除了那个quit的button之外,其他两个就是完成这个全屏功能的。相关的回调函数就是button_unfullscreen_clicked和button_fullscreen_clicked,设置属性的也就是ftk_window_set_fullscreen这个函数,关键参数就是第二个参数。设置为1,全屏,否则就是非全屏。
流程就是这么简单。