博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ftk学习记(对话框篇)
阅读量:4467 次
发布时间:2019-06-08

本文共 3059 字,大约阅读时间需要 10 分钟。

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

    前面谈到了输入法,首先看一看效果。

    上面有4个输入框,大家能够分别试试,看看效果怎样。

    今天,我们要说的是对话框。直接看demo代码好了,

#include "ftk.h"static Ret button_quit_clicked(void* ctx, void* obj){	if(ctx != NULL)	{		/*modal*/		*(int*)ctx = ftk_widget_id(obj);	}	else	{		/*modal-less*/		ftk_widget_unref(ftk_widget_toplevel(obj));	}	return RET_QUIT;}static Ret button_close_clicked(void* ctx, void* obj){	ftk_widget_unref(ctx);	return RET_OK;}static Ret button_dialog_clicked(void* ctx, void* obj){	int id = 0;	int width = 0;	int height = 0;	FtkWidget* label = NULL;	FtkWidget* button = NULL;	FtkWidget* dialog = NULL;	FtkBitmap* icon = NULL;	int modal = (int)ctx;		ftk_logd("%s:%d begin\n", __func__, __LINE__);	dialog = ftk_dialog_create(0, 40, 320, 240);		icon = ftk_theme_load_image(ftk_default_theme(), "info-icon"FTK_STOCK_IMG_SUFFIX); 	ftk_dialog_set_icon(dialog, icon);	width = ftk_widget_width(dialog);	height = ftk_widget_height(dialog);	label = ftk_label_create(dialog, width/6, height/4, 5*width/6, 20);	ftk_widget_set_text(label, "Are you sure to quit?");	button = ftk_button_create(dialog, width/6, height/2, width/3, 50);	ftk_widget_set_text(button, "yes");	ftk_button_set_clicked_listener(button, button_quit_clicked, modal ? &id : NULL);		button = ftk_button_create(dialog, width/2, height/2, width/3, 50);	ftk_widget_set_text(button, "no");	ftk_button_set_clicked_listener(button, button_quit_clicked, modal ? &id : NULL);	ftk_window_set_focus(dialog, button);	ftk_widget_set_text(dialog, modal ? "model dialog" : "normal dialog");	ftk_widget_show_all(dialog, 1);	if(modal)	{		assert(ftk_dialog_run(dialog) == id);		ftk_widget_unref(dialog);	}	else	{		ftk_widget_show_all(dialog, 1);	}	ftk_logd("%s:%d end\n", __func__, __LINE__);	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);	button = ftk_button_create(win, 0, height/6, width/3, 50);	ftk_widget_set_text(button, "Normal");	ftk_button_set_clicked_listener(button, button_dialog_clicked, NULL);	button = ftk_button_create(win, 2*width/3, height/6, width/3, 50);	ftk_widget_set_text(button, "Modal");	ftk_button_set_clicked_listener(button, button_dialog_clicked, (void*)1);	button = ftk_button_create(win, width/4, height/2, width/2, 60);	ftk_widget_set_text(button, "quit");	ftk_button_set_clicked_listener(button, button_close_clicked, win);	ftk_widget_set_text(win, "demo dialog");	ftk_widget_show_all(win, 1);	ftk_widget_set_attr(win, FTK_ATTR_QUIT_WHEN_CLOSE);	ftk_run();	return 0;}

    这段对话框的代码略微长一点,可是理解上没有难度。首先,main代码中创建了3个button。除了一个quit的button之外,其它两个button都是用来弹出对话框使用的,两个button的回调函数都是button_dialog_clicked。那么这当中又做了些什么呢?我们继续往下看,首先它会调用ftk_create_dialog创建一个对话框,然后用ftk_dialog_set_icon设置一下icon,接着依次创建了label和button,就是这样。怎样退出对话框呢?仅仅须要单击一下dialog中的button就可以,它会调用button_close_clicked函数,此时ftk_widget_unref会帮我们退出当前dialog,返回之前的windows,就是这么简单。

    效果图,下次见。

转载于:https://www.cnblogs.com/hrhguanli/p/3936514.html

你可能感兴趣的文章
mongodb安装4.0(rpm)
查看>>
DispatcherServlet的url mapping为“/”时,对根路径访问的处理
查看>>
备忘pwnable.kr 之passcode
查看>>
好久没敲代码了,手有点生——一个小小的时钟
查看>>
运算符 AS和IS 的区别
查看>>
(转)详解C中volatile关键字
查看>>
easyui时的时间格式yyyy-MM-dd与yyyy-MM-ddd HH:mm:ss
查看>>
专题:动态内存分配----基础概念篇
查看>>
Codeforces Round #426 (Div. 2) (A B C)
查看>>
The Most Simple Introduction to Hypothesis Testing
查看>>
UVA10791
查看>>
P2664 树上游戏
查看>>
jQuery 停止动画
查看>>
Sharepoint Solution Gallery Active Solution时激活按钮灰色不可用的解决方法
查看>>
教你50招提升ASP.NET性能(二十二):利用.NET 4.5异步结构
查看>>
lua连续随机数
查看>>
checkstyle使用介绍
查看>>
会了这十种Python优雅的写法,让你工作效率翻十倍,一人顶十人用!
查看>>
二维码图片生成
查看>>
在做操作系统实验的一些疑问
查看>>