ftk学习记(消息框篇)
2023-09-14 09:10:20 时间
【 声明:版权全部,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
上一篇说到了输入框。闲话不多说,首先看结果显示,
大家看看效果是不是和我们之前说的一样。今天,我们谈一下消息狂。这样的消息框事实上应用得特别多,有警告用的,有提问的,有信息的,也有提示的。没关系,ftk这边也有demo代码,大家能够学习一下。
#include "ftk.h" static const char* buttons1[] = {"Yes", NULL}; static const char* buttons2[] = {"Yes", "No", NULL}; static const char* buttons3[] = {"Yes", "No", "Cancel", NULL}; static Ret button_warning(void* ctx, void* obj) { int ret = ftk_warning("Warning", "December 31, 2008: patchwork.kernel.org is now available for general use. It is currently only monitoring the Linux Kernel mailing-list, but should be useful to kernel developers in dealing with patches flying across the wire.", buttons1); ftk_logd("%s: ret = %d\n", __func__, ret); return RET_OK; } static Ret button_info(void* ctx, void* obj) { int ret = ftk_infomation("Infomation", "September 19, 2008: mirrors.kernel.org has been flipped over to using our new GeoDNS based bind server (named-geodns). This means that, at the dns query level, our servers will attempt to direct you to the nearest / fastest kernel.org mirror for your request. This means that you no longer have to use mirrors.us.kernel.org or mirrors.eu.kernel.org to generally route you to the right place. This does mean a change to mirrors.kernel.org no longer explicitly pointing at mirrors.us.kernel.org. Additional information on named-geodns will be forth coming, check back here for an addendum soon.", buttons2); ftk_logd("%s: ret = %d\n", __func__, ret); return RET_OK; } static Ret button_question(void* ctx, void* obj) { int ret = ftk_question("Question", "Are you sure to quit?", buttons3); ftk_logd("%s: ret = %d\n", __func__, ret); return RET_OK; } static Ret button_tips(void* ctx, void* obj) { int ret = ftk_tips("The dialog will quit in 3 seconds."); ftk_logd("%s: ret = %d\n", __func__, ret); return RET_OK; } static Ret button_quit(void* ctx, void* obj) { ftk_quit(); return RET_OK; } int FTK_MAIN(int argc, char* argv[]) { int y = 0; 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); y = (height - 240)/2; y = y > 0 ? y : 0; button = ftk_button_create(win, 0, y, width/2, 50); ftk_widget_set_text(button, "question"); ftk_button_set_clicked_listener(button, button_question, win); button = ftk_button_create(win, width/2, y, width/2, 50); ftk_widget_set_text(button, "warning"); ftk_button_set_clicked_listener(button, button_warning, win); button = ftk_button_create(win, 0, y+60, width/2, 50); ftk_widget_set_text(button, "info"); ftk_button_set_clicked_listener(button, button_info, win); button = ftk_button_create(win, width/2, y+60, width/2, 50); ftk_widget_set_text(button, "tips"); ftk_button_set_clicked_listener(button, button_tips, win); button = ftk_button_create(win, width/4, y+120, width/2, 50); ftk_widget_set_text(button, "quit"); ftk_button_set_clicked_listener(button, button_quit, win); ftk_widget_set_text(win, "message box demo"); ftk_widget_show_all(win, 1); ftk_widget_set_attr(win, FTK_ATTR_QUIT_WHEN_CLOSE); ftk_run(); return 0; }
代码流程和之前的编写方法一样。从代码中看去,有5个button,每一个button都有自己的回调函数。这5个函数各自是button_warning、button_info、button_question、button_tips、button_quit。那回调函数中做了什么呢?
抛开button_quit,我们仅仅要看其它4个button的回调函数。函数各自是ftk_warning、ftk_info、ftk_question、ftk_tips。除了最后一个ftk_tips,你会发现其它3个函数都是3个參数。參数1为标题,參数2为内容,參数3为button形式。这样的消息框中button有多种形式,有两个button的,有三个button的,须要依据详细情况而定。
欲看效果怎样,仅仅好等下一篇文章了。
相关文章
- 浅谈消息队列的原理及优势
- 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表
- java struts2入门学习---中文验证、对错误消息的分离、结果(result)类型细节配置
- 大叔问题定位分享(48)kafka部分topic出现消息丢失
- java struts2入门学习---中文验证、对错误消息的分离、结果(result)类型细节配置
- MATLAB学习笔记 隐写技术-将消息/图像隐藏在图像中
- Android开发学习笔记(十八)复选框CheckBox和消息提示框Toast
- RabbitMQ消息confirm确认机制
- RocketMQ学习(六):消息的生命周期上之消息的产生
- RocketMQ学习(九):顺序消息
- There is no database available的错误消息
- package javax.servlet.jsp.tagext does not exist的错误消息如何解决
- RocketMQ学习(七):消息的生命周期下之消息的消费
- IIS 编译器错误消息: CS0016未能写入输出文件“c:WINDOWSMicrosoft.NETFrameworkv1.1.4322Temporary ASP.NET Filesroo
- 【9001】Internet消息发布
- 如何处理SAP Fiori Launchpad KPI tile点击后出现的错误消息
- Flask框架flash消息闪现学习与优化符合闪现之名
- Python Flask框架学习16:Flask 消息闪现
- 学习Spring Boot:(二十六)使用 RabbitMQ 消息队列
- HTML5 学习总结(五)——WebSocket与消息推送
- 一脸懵逼学习KafKa集群的安装搭建--(一种高吞吐量的分布式发布订阅消息系统)
- lotus v1.10.0 聚合消息手动提交
- C# 将MSMQ消息转换成Json格式 【优化】
- 启动文件、简单的消息框
- ROS学习(十二)—— 编写简单的消息发布器和订阅器(C++)
- JS中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么?
- 《RabbitMQ》如何保证消息的可靠性
- WCF 学习总结5 -- 消息拦截实现用户名验证(转)