【声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱: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,就是这么简单。

效果图,下次见。

ftk学习记(对话框篇)相关推荐

  1. ftk学习记(脚本篇)

    [声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 上一篇说到了对话框,今天就看看结果. 对话框不复杂,今天我们就来谈一谈脚本.有过android开 ...

  2. ftk学习记(消息框篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 上一篇说到了输入框.闲话不多说,首先看结果显示, 大家看看效果是不是和我们之前说的一样.今天, ...

  3. ftk学习记(首篇)

    [ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 非常早之前就知道ftk了,当时主要是由于买了李先静的书,所以知道了这么一个项目.由于对这样的g ...

  4. ftk学习记(label篇)【转】

    转自:http://blog.csdn.net/feixiaoxing/article/details/25000093 版权声明:本文为博主原创文章,未经博主允许不得转载. [ 声明:版权所有,欢迎 ...

  5. ftk学习记(滑动条篇)

    [声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前一篇说到了combox,就先看一下效果吧. 说完了combox,就谈谈今天的滑动条.滑动条,当 ...

  6. ftk学习记(button篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前面,我们说到了label,这里可以看一下label运行的效果是怎么样的. 大家可以对照上面的 ...

  7. ftk学习记(image显示篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前面说到了scroll bar,下面还是首先看一下效果图. 说完了滑动条.下面就来谈一谈ima ...

  8. ftk学习记(combox篇)

    [声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 上一篇文章谈到了多窗口,还是按照约定看一下效果是什么样的. 如果大家细心一点,就会发现窗口中的l ...

  9. ftk学习记(多窗口篇)

    [声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在上周末的博客中,我们谈到了list view,今天可以看看效果图如何. 如果大家细心一点,可以 ...

最新文章

  1. QT:(2)Window10、VS15下安装qt5.12.8
  2. 利用iconv进行文件编码批量原地转换
  3. C#多线程学习之:Monitor类
  4. Linux 上 安装 nginx、 阿里云服务器上安装 nginx
  5. soap接口怎么不返回tuple python_Python 中的接口
  6. Servlet传递数据方式
  7. eclipse 最全快捷键 分享快乐与便捷
  8. 新漏洞 RAMpage 曝光:2012年后发布的所有的 Android 手机都危险!
  9. 洛谷——P2084 进制转换
  10. ZLYZD团队第四周项目总结
  11. vos3000下载java_VOS3000 安装
  12. 三菱数控CNC系统G代码M代码大全
  13. ORACLE 11G利用 ORDS+pljson来实现json_table 效果
  14. 360手机号码归属地查询抓取、免费稳定高效手机号码归属地查询
  15. 我的世界Java版中怎么改名_我的世界怎么改名字 付/免费改名字教程
  16. 网站logo服务器更换显示以前,网站更换logo
  17. PTA 背包问题凑零钱
  18. luat驱动LCD屏幕
  19. 56.木秀于林,风必摧之
  20. SLCP验厂辅导,SLCP数据收集和验证工具整合成在线格式的托管平台来完成

热门文章

  1. 《为iPad而设计:打造畅销App》——将iPad作为视频娱乐设备
  2. 用HTML5 Canvas为网页添加动态波浪背景
  3. linux操作系统-SSH原理介绍与免密运用与远程命令操作
  4. OpenGL.ProjectiveTextureMapping
  5. Autobook中文版(七)—9.一个小的GNU Autotools项目
  6. CCNA实验之------NAT实验配置(必考)
  7. 最新“母马”病毒反杀主流杀毒软件
  8. EASYSIZE备份
  9. [Usaco2006 Open]County Fair Events 参加节日庆祝
  10. SVN使用教程总结[转]