博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GTK添加事件
阅读量:5337 次
发布时间:2019-06-15

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

View Code
#include 
int on_quit_event() {
gtk_main_quit(); return 0; } int main(int argc,char *argv[]) {
GtkWidget *window; gtk_init(&argc ,&argv); window=gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(window) ,"delete_event" ,G_CALLBACK(on_quit_event),NULL); gtk_window_set_title(GTK_WINDOW(window) ,"一个功能完善的窗口"); gtk_window_set_default_size(GTK_WINDOW(window) ,500 ,100); gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); gtk_widget_show(window);gtk_main(); return FALSE; }

讲解下上面的代码,GTK添加事件和一般消息相应机制的编程差不多,无非是注册回调函数。

所以这么多的代码只有2句是关键,第一个就是注册 g_signal_connect(G_OBJECT(window)       ,"delete_event" ,G_CALLBACK(on_quit_event),NULL);

第二个就是进入消息循环gtk_main();其他都是设置下属性等,然后显示,没记错的话,windows上也是这个顺序!

有了和具体控件挂钩的函数,那么控制这些控件就非常简单了。看消息注册函数,原型是

g_signal_connect()

#define             g_signal_connect(instance, detailed_signal, c_handler, data)

Connects a  function to a signal for a particular object.

The handler will be called before the default handler of the signal.

instance :

the instance to connect to.

tailed_signal :

a string of the form "signal-name::detail".

c_handler :

the  to connect.

data :

data to pass to c_handler calls.

Returns :

the handler id

第一个参数当然是要关联的窗口对象,也不一定是窗口,应该是实例。比如按钮,文本框都行。

第二个参数是要关联的事件名称

第三个就是回调函数了,第四个参数是传递给回调函数的参数

再说下gtk_main()

gtk_main ()

void                gtk_main                            (void);

Runs the main loop until  is called. You can nest calls to . In that case  will make the innermost invocation of the main loop return.

api reference里已经很清楚了。除非调用gtk_main_quit否则它是不退出的。

转载于:https://www.cnblogs.com/bigchen2012/archive/2012/01/27/2330053.html

你可能感兴趣的文章
模拟Post登陆带验证码的网站
查看>>
NYOJ458 - 小光棍数
查看>>
java中常用方法
查看>>
【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
查看>>
canvas动画
查看>>
4,7周围玩家
查看>>
关于webpack升级过后不能打包的问题;
查看>>
vue - 生命周期
查看>>
Python正则表达式
查看>>
Linux进程间通信--命名管道
查看>>
UVa 10970 - Big Chocolate
查看>>
js输出
查看>>
H5多文本换行
查看>>
HAL层三类函数及其作用
查看>>
Odoo 去掉 恼人的 "上午"和"下午"
查看>>
web@h,c小总结
查看>>
java编程思想笔记(一)——面向对象导论
查看>>
Data Structure 基本概念
查看>>
Ubuntu改坏sudoers后无法使用sudo的解决办法
查看>>
NEYC 2017 游记
查看>>