窗口最小化时调用的Gtk事件是什么?

时间:2011-11-05 05:13:41

标签: c events signals gtk

如果我希望在窗口关闭时调用某个函数,请使用delete_event进行连接。如果我希望在用户最小化Gtk窗口时调用该函数,我应该连接什么。像minimize_event这样的东西?我在文档中找不到任何内容。

1 个答案:

答案 0 :(得分:5)

我处于相同的十字路口,只有一些信息和代码在python gtk上,但不在C中。

在一次又一次地查看文档后,我意识到我被相同的名字,工会,结构,枚举和位域混淆了。我把事情当作布尔人处理,当它一直是一个小东西时。

首先:

g_signal_connect(
    G_OBJECT(window), 
    "window-state-event", 
    G_CALLBACK(callback_func), 
    userDataPointer);

然后:

gboolean callback_func(
    GtkWidget *widget,
    GdkEventWindowState *event,
    gpointer user_data)
{
    //some code
    //Minimized window check
    if(event->new_window_state & GDK_WINDOW_STATE_ICONIFIED){
    //some other code
}
//some more other code
return TRUE;
}

请记住这是位域,&是“位和”运算符不是布尔值&&。 二进制文件中的GDK_WINDOW_STATE_ICONIFIED =210 event->new_window_stateint,其中第二位是活动的

Widget可同时最大化最小化, GDK_WINDOW_STATE_MAXIMIZED = 4100

如果您将最大化窗口最小化为event->new_window_state = 6或110

您可以尝试并查看哪种方式最适合您。

更多信息:

最后注意和警告:

我正在使用gtk + 2,因为双赢和林开发。较新的gtk + 3可能会做一些不同的事情。

Gnome Developer Site网站有一些链接被破坏或错误,或部分重写,但有一些错误。我上面的第一个网址上的页面有

gboolean user_function (GtkWidget *widget,GdkEvent  *event,gpointer user_data){}

虽然源代码中的手册以及其他可下载的手册具有正确的:

gboolean user_function (
    GtkWidget *widget,
    GdkEventWindowState *event, 
    gpointer user_data){}

该页面还有incorrect or broken link for the gtk3 page for GdkEventWindowState。 gtk + 3版本似乎与gtk + 2一样错,我还没有看到带有源代码的gtk + 3手册或单独的,所以我不知道gtk + 3是否真的修改了事件和gdk结构的回调

目前gtk + 3稳定* 期待 *不一致。最好使用源代码或Linux发行版和版本gtk + 2附带的手册。

我希望这会有所帮助。