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

时间:2011-09-28 18:39:27

标签: c# c gtk gtk#

我想在窗口中为特定属性提供最大化,并在最大化状态结束时将其更改回来。我正在使用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);
}

有什么建议吗?感谢

1 个答案:

答案 0 :(得分:2)

创建窗口并观察窗口时设置“窗口状态事件”信号。见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

你的onmax()将是GDK_WINDOW_STATE_MAXIMIZED变为TRUE时调用的处理程序。 见http://developer.gnome.org/gdk/stable/gdk-Events.html#GDK-STRUCTURE-MASK:CAPShttp://developer.gnome.org/gdk/stable/gdk-Event-Structures.html#GdkEventWindowStatehttp://developer.gnome.org/gdk/stable/gdk-Event-Structures.html#GdkWindowState

对不起,没有实际编写代码的帮助远不止于此。谷歌可能有一些很好的例子,然后可能不会。对于那些已经可以做GTK +信号的人来说,实际上有哪些文档。

编辑:我在C中做GTK +,我引用的页面是C。

编辑#2:只要发送信号并且信号数据是重要的,就执行处理程序(回调)。我可能会做一个开关:对我感兴趣的每个信号数据值的情况,并可能为其他函数设置一个标志,以便稍后阅读。