如何在Gtk中检查窗口是否已最大化

本文关键字:窗口 是否 最大化 检查 Gtk | 更新日期: 2023-09-27 18:10:09

我想给一个窗口一个特定的属性只有当它被最大化和改变它回到最大化状态结束时。我使用的是gtk#,但欢迎所有Gtk绑定答案。我要找的是这样的东西(伪代码):

 OnMaximise += new Mhandler();
 Mhandler(){ property = true;}

或:

Resize += delegate() {
     if (isMaximised()) property=true; else property = false;};

或C方式:

gtk_window_on_maximise(GTK_WINDOW(mwin),onmax);
void onmax() 
{ 
     if (gtk_window_is_max(GTK_WINDOW(mwin))        
          gtk_window_set_property(GTK_WINDOW(mwin),true); 
     else gtk_window_set_property(GTK_WINDOW(mwin),false);
}

有什么建议吗?由于

如何在Gtk中检查窗口是否已最大化

在创建窗口时设置"window-state-event"信号并监视它。看到http://developer.gnome.org/gtk/2.24/GtkWindow.html gtk-window-maximize也http://developer.gnome.org/gtk/2.24/GtkWidget.html GtkWidget-window-state-event

当GDK_WINDOW_STATE_MAXIMIZED变为TRUE时,onmax()将被调用。看到http://developer.gnome.org/gdk/stable/gdk-Events.html GDK-STRUCTURE-MASK:帽和http://developer.gnome.org/gdk/stable/gdk-Event-Structures.html GdkEventWindowState和http://developer.gnome.org/gdk/stable/gdk-Event-Structures.html GdkWindowState

对不起,如果没有实际编写代码,就不能提供更多帮助。谷歌可能有一些好的例子,但也可能没有。这里的文档实际上是为那些已经可以使用GTK+信号的人准备的。

编辑:我用C编写GTK+,我引用的页面都是为C编写的。

EDIT #2:处理程序(回调)在信号发送时执行,信号数据是重要的。我可能会对我感兴趣的每个信号数据值做一个switch:case,并可能为其他函数设置一个稍后读取的标志。