【GTK】信号量(signal)大全
信号函数:
gint gtk_signal_connect(GtkObject *object,gchar *name,GtkSignalFuncfunc,gpointer func_data);
回掉函数的格式:
void callback_func(GtkEidget *widget,gpointer callback_data);
GTK的事件:gtk组件的行为或者X服务器发送的事件可以与下列事件联系起来:
button_press_event 按钮按下
button_release_event 按钮释放
motion_notify_event 鼠标移动
delete_event 使用窗口管理器关闭
destroy_event 关闭
expose_event 曝光
key_press_event 按键按下
key_release_event 按键释放
enter_notify_event 鼠标指针进入组件
leave_notify_event 鼠标指针离开组件
configure_event 属性改变
focus_in_event 获得聚焦
focus_out_event 失去聚焦
map_event 映射
unmap_event 消失
property_notify_even 属性改变
selection_clear_event 选择清除
selection_request_event 选择请求
selection_notify_event 选择通知
proximity_in_event 接近
proximity_out_event 离开
drag_begin_event 拖开始
drag_request_event 拖请求
drag_end_event 拖结束
drop_enter_event 放进入
drop_leave_event 放离开
drop_data_available_event 放数据可用
除有前面描述的信号机制外,还有一套 events 反映 X事件机制。回调函数可以与这些事件连接。这些事件是:
- event
- button_press_event
- button_release_event
- scroll_event
- motion_notify_event
- delete_event
- destroy_event
- expose_event
- key_press_event
- key_release_event
- enter_notify_event
- leave_notify_event
- configure_event
- focus_in_event
- focus_out_event
- map_event
- unmap_event
- property_notify_event
- selection_clear_event
- selection_request_event
- selection_notify_event
- proximity_in_event
- proximity_out_event
- visibility_notify_event
- client_event
- no_expose_event
- window_state_event
为了连接一个回调函数到这些事件之一,你使用函数 g_signal_connect(),像前面介绍的一样,用上面事件名之一作为name 参数。事件的回调函数与信号的回调函数有一点点不同:
gint callback_func( GtkWidget *widget,GdkEvent *event,gpointer callback_data );
GdkEvent 是一个 C 联合结构,它的类型依赖于上述事件中的哪个事件发生了。为了让我们得知发生了哪个事件,每个可能的类型都有一个 type 成员来反映发生的事件。事件结构的其它部分将依赖于这个事件的类型。类型的可能的值有:
GDK_NOTHINGGDK_DELETEGDK_DESTROYGDK_EXPOSEGDK_MOTION_NOTIFYGDK_BUTTON_PRESSGDK_2BUTTON_PRESSGDK_3BUTTON_PRESSGDK_BUTTON_RELEASEGDK_KEY_PRESSGDK_KEY_RELEASEGDK_ENTER_NOTIFYGDK_LEAVE_NOTIFYGDK_FOCUS_CHANGEGDK_CONFIGUREGDK_MAPGDK_UNMAPGDK_PROPERTY_NOTIFYGDK_SELECTION_CLEARGDK_SELECTION_REQUESTGDK_SELECTION_NOTIFYGDK_PROXIMITY_INGDK_PROXIMITY_OUTGDK_DRAG_ENTERGDK_DRAG_LEAVEGDK_DRAG_MOTIONGDK_DRAG_STATUSGDK_DROP_STARTGDK_DROP_FINISHEDGDK_CLIENT_EVENTGDK_VISIBILITY_NOTIFYGDK_NO_EXPOSEGDK_SCROLLGDK_WINDOW_STATEGDK_SETTING |
所以,连接一个回调函数到这些事件之一,我们会这样用:
g_signal_connect (G_OBJECT (button), "button_press_event",G_CALLBACK (button_press_callback), NULL); |
这里假定 button 是一个按钮构件。现在,当鼠标位于按钮上并按一下鼠标时,函数 button_press_callback() 会被调用。这个函数应该声明为:
static gint button_press_callback( GtkWidget *widget, GdkEventButton *event,gpointer data ); |
注意,我们可以把第二个参数类型声明为 GdkEventButton,因为我们知道哪个类型的事件会发生。
这个函数的返回值指示这个事件是否应该由 GTK 事件处理机制做进一步的传播。返回 TRUE 指示这个事件已经处理了,且不应该做进一步传播。返回 FALSE 继续正常的事件处理。详见高级事件和信号处理这一章。
GdkEvent 数据类型详情请参见附录 GDK 事件类型。
GDK 选中区和拖放的接口函数也发出许多事件,在 GTK 中用信号来反映。下列信号的内容详见源构件上的信号和目的构件上的信号这两章:
- selection_received
- selection_get
- drag_begin_event
- drag_end_event
- drag_data_delete
- drag_motion
- drag_drop
- drag_data_get
- drag_data_received
转载于:https://www.cnblogs.com/JPAORM/archive/2012/01/05/2510049.html
【GTK】信号量(signal)大全相关推荐
- Android 信号量signal使用注意的问题
再安卓中使用signal特别是与其他第三方的apk或SDK使用时需要主要先后顺序,因为有可能你的signal 会干掉第三方的系统进程,导致第三方出现错误而不知道从哪处理 我们项目中和果盘助手等sdk在 ...
- 测试MM32F3277中的MicroPython的Signal功能
简 介: 通过对这个版本MicroPython中的Signal功能进行测试,可以看到它现在还存在问题.后来经过SuYong修正之后,问题解决了. 关键词: MicroPython,MM32,Signa ...
- GTK+ VS MFC
为什么80%的码农都做不了架构师?>>> 今天看到一篇关于GTK+和MFC对比的文章,学GTK+编程的来看看 MFC已经江河日下,日渐式微,而GTK+可谓欣欣向荣,如日中天.这 ...
- MFC和GTK的区别
关键技术 http://blog.csdn.net/master_max/article/details/1540204 MFC和GTK的区别?? 1. 两者都是基于面向对象设计的.尽管MFC是用C+ ...
- python模块—signal
文章目录 信号 介绍 生命周期 信号处理 信号表示 信号分类 信号通信 常用信号 python signal 信号 介绍 信号signal的全称是软中断信号,是用来通知进程发生的异步事件,是在软件层次 ...
- gdb 跟踪调试命令整理
内容源自于陈浩CSDN博客的用GDB调试程序一系列文章 用GDB调试程序(一) 用GDB调试程序(二) 用GDB调试程序(三) 用GDB调试程序(四) 用GDB调试程序(五) 用GDB调试程序(六) ...
- linux 用mutex定义一个linkedlist,【基于LINUX的操作系统实验教程最终版材料】
(基于LINUX的操作系统实验教程)(最终版) <基于LINUX的操作系统实验教程.doc>由会员分享,可免费在线阅读全文,更多与<(基于LINUX的操作系统实验教程)(最终版)&g ...
- 花了一个深夜,才用C语言写了一个2048游戏雏形
12年我毕业的第二个月工资,我就买了一个IPAD,然后在IPAD上下了一个2048游戏,玩起来非常爽. 然后这几天看到好几个公众号都发了自己写这个游戏的代码,然后我自己也想试试,所以就有了这篇文章,写 ...
- 如何优雅地停止Java进程
目录 理解停止Java进程的本质 应该如何正确地停止Java进程 如何注册关闭钩子 使用关闭钩子的注意事项 信号量机制 总结 理解停止Java进程的本质 我们知道,Java程序的运行需要一个运行时环境 ...
- vmx进程已提前退出_如何优雅地停止Java进程
目录 理解停止Java进程的本质 应该如何正确地停止Java进程如何注册关闭钩子使用关闭钩子的注意事项信号量机制 总结 理解停止Java进程的本质 我们知道,Java程序的运行需要一个运行时环境,即: ...
最新文章
- Ubantu下hadoop运行第一个例子wordcount过程
- 网络推广外包中目标用户习惯对企业网站设计与开发有重要影响
- ASP.NET 配置log4net日志功能
- Python的re.match()和re.search()的使用和区别
- 【启发式合并】【dfs】树数树(nowcoder 20107-C)
- python学习笔记:第19天 类的约束、异常、MD5和logging
- java开发小程序好吗,看完必懂
- K8S从懵圈到熟练 - 节点下线姊妹篇
- Linux Shell脚本入门教程系列之(十六) Shell输入输出重定向
- 队列处理器 WorkQueueT
- Android近场通信---NFC基础(一)
- 请给 SpringBoot 多一些内存
- 《算法导论》第三版第7章 快速排序 练习思考题 个人答案
- 【软件工程】实验七:建立功能模型--自行车租赁管理系统
- STM32F407+Cubemx学习应用[5]——DMA收发ModbusRS232数据——威纶通触摸屏
- 对于ssl中的pem文件和key 文件的理解
- 利用win7漏洞进行系统登录密码破解
- C语言----小游戏
- The following signatures couldn‘t be verified because the public key is not available问题解决
- Highcharts使用小心得
热门文章
- 获取map中的一个value值以及遍历map获得map里所有key、value的值
- B/S、C/S双客户类型系统研究
- Linux系统管理(6)——Linux下启动Redis服务的几种方法
- 设计一个60T数据仓库及大数据分析平台,医院数字化该怎么做?
- 建立可视化决策平台,“数据化”首当其冲! 1
- 报表软件公司悬赏 BUG,100块钱1个的真实用意
- 友商对于鸿蒙系统,谷歌新系统上线!鸿蒙面临生死线考验,华为喊话友商,被小米拒绝...
- 在一个html中使用另一个html数据,如何为某些HTML标签存储任意数据
- java的trans文件大小写_文件大小写转换与后缀不变
- Linux高频命令汇总,高频Linux命令