我在同一个十字路口,只有python gtk上的一些信息和代码,但不是在C.
在一次又一次地查看文档后,我意识到我被同名的声音,工会,结构,枚举和位域混淆了.我把事情当作布尔人来处理,当时它总是一点点的东西.
第一:
g_signal_connect(
G_OBJECT(window),
"window-state-event",
G_CALLBACK(callback_func),
userDataPointer);
Run Code Online (Sandbox Code Playgroud)
然后:
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;
}
Run Code Online (Sandbox Code Playgroud)
记住这是位域,并且&是"位和"运算符而不是布尔值&&.
GDK_WINDOW_STATE_ICONIFIED =2或10在二进制和event->new_window_state是一个int其中的第二位是活性
Widget可以同时最大化和最小化,
GDK_WINDOW_STATE_MAXIMIZED = 4或者100
如果您将最大化窗口最小化为event->new_window_state = 6110或110
您可以尝试并查看最适合您的方法.
更多信息:
最后注意和警告:
我正在使用gtk + 2,因为双赢和林开发.较新的gtk + 3可能会做一些不同的事情.
该侏儒开发者网站,网站上有一些链接损坏或错误,或部分重新writen,有一些错误.我上面的第一个网址上的页面有
gboolean user_function (GtkWidget *widget,GdkEvent *event,gpointer user_data){}
Run Code Online (Sandbox Code Playgroud)
虽然源代码中的手册以及其他可下载的手册具有正确的:
gboolean user_function (
GtkWidget *widget,
GdkEventWindowState *event,
gpointer user_data){}
Run Code Online (Sandbox Code Playgroud)
该页面还包含gtk3页面GdkEventWindowState的错误或断开链接.基于GTK + 3版似乎错了,因为在GTK + 2,我还没有看到GTK + 3本手册的源代码或独立的,所以我不知道,如果GTK + 3真正改变事件的回调和GDK结构
目前为gtk + 3稳定*期望*不一致.最好使用源代码或Linux发行版和版本gtk + 2附带的手册.
我希望这有帮助.