ftk学习记录(多形式的文章)

ftk学习记录(多形式的文章)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。


【声明:版权全部。欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】


    在上周末的博客中,我们谈到了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这个函数中。这说明系统在初始执行的时候,就会创建一个窗体,并且以后每次单击“创建窗体”按钮的时候,也会在当前的窗体之上添加一个窗体。

当然假设想关闭当前窗体,直接单击“关闭窗体”这个按钮就能够了。


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




版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117025.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • keil和keil mdk的区别_keil5数据类型

    keil和keil mdk的区别_keil5数据类型楼主本人用的是stm32f407zgt6的芯片,你可以参照找到你用的芯片对应的文件。      在KeilMDK开发环境里,比如一个无符号32位整形数据会有很多种表示方法:1,unsignedint32(C语言标准表达方法)2,uint32_t;  3,u32;  这三种方式都是在表达同一个意思,可为什么ST的开发人员要搞的这么乱呢?还有其他好多你可能看起来很陌生,

    2022年10月15日
    3
  • 手机APP自动化 Appium教程

    手机APP自动化 Appium教程Appium原理与安装Appium是一个移动App(手机应用)自动化工具。手机APP自动化有什么用?自动化完成一些重复性的任务比如微信客服机器人爬虫自动化测试Appium自动化方案的特点:开源免费支持多个平台支持多种类型的自动化支持多种编程语言自动化原理我们先来看一下Appium自动化的原理图这图是不是很眼熟?对啦,和Selenium原理图很像。因为Appium自动化架构就是借鉴的Selenium。大家看看这幅图,包含了3个主体部分:自动化程序

    2022年6月14日
    68
  • Oracle MERGE INTO的使用方法

    Oracle MERGE INTO的使用方法

    2021年11月29日
    33
  • android 实现悬架控制

    android 实现悬架控制

    2022年1月6日
    50
  • mac idea2021激活码【2021最新】

    (mac idea2021激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月30日
    45
  • android hybrid框架_基于android的app开发

    android hybrid框架_基于android的app开发转载请标明出处:一片枫叶的专栏本文将介绍Android中hybrid开发相关的知识点。hybrid开发实际上是混合开发的意思,这里的混合是H5开发与Native开发混合的意思。下面的文章中我们将逐个介绍一下hybrid开发的概念、hybrid开发的优势、Android中如何实现hybrid开发、简单的hybrid开发的例子,以及在产品实践中对hybrid开发的应用,希望通过本篇文章的介绍让您能够对A

    2022年9月22日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号