c# - 你如何检查一个窗口是否在 Gtk 中最大化?

标签 c# c gtk gtk#

我想给一个窗口一个特定的属性只有当它被最大化时并且当最大化状态结束时将它改回来。我正在使用 Gtk# ,但欢迎所有 GTK 绑定(bind)答案。我正在寻找的是这样的东西(伪代码):

 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);
}

有什么建议吗?谢谢

最佳答案

在创建窗口时设置“窗口状态事件”信号并监视它。参见 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:每当发送信号时都会执行处理程序(回调),信号数据才是最重要的。我可能会对我感兴趣的每个信号数据值做一个 switch:case,并可能为其他函数设置一个标志以供稍后阅读。

关于c# - 你如何检查一个窗口是否在 Gtk 中最大化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7587902/

相关文章:

c# - 容易吗?在 C# 中使用变量访问对象的属性

Python - 如何使用 gtk.Window 而不是 Gtk.Window 制作透明窗口?

linux - 如何禁用 GtkMenuItem?

gtk - GLib编译错误(ffi.h),但libffi已安装

c# - 使用内部连接从 Dapper 获取数据

c# - 当一个构造函数实现另一个构造函数时有好处还是坏处?

c++ - 后期绑定(bind)有什么优点?举一个 C++ 函数指针上下文中的例子

在 Linux 中创建守护进程

使用宏连接变量

C# 反射性能帮助