如何在不显示窗口的情况下获得最大化窗口的大小?

时间:2012-01-31 00:43:31

标签: c gtk gobject

我正在尝试确定最大化窗口的大小,以便将窗口大小设置为接近它的值。但是,如果没有首先显示最大化窗口,我就不知道如何做到这一点。有没有办法在窗口显示之前发出gtk_window_maximize生成的信号?

以下是我到目前为止的尝试。问题是我可以在调整大小之前看到最大化窗口的闪光。

#include <gtk/gtk.h>

int signal_id;

void resize(GtkWindow *window, GdkEvent *event, gpointer data)
{
    gint width, height;

    g_signal_handler_disconnect(G_OBJECT(window), signal_id);
    gtk_window_get_size(window, &width, &height);
    gtk_window_resize(window, width - 10, height - 10);
}


int main(int argc, char *argv[])
{
    GtkWidget *window;

    gtk_init(&argc, &argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    signal_id = g_signal_connect(G_OBJECT(window), "configure-event", G_CALLBACK(resize), NULL);
    gtk_window_maximize(GTK_WINDOW(window));
    gtk_widget_show_all(GTK_WIDGET(window));

    gtk_main();
    return 0;
}

1 个答案:

答案 0 :(得分:2)

不可能,因为在窗口管理器映射窗口之前,实际大小是未知的。但你能做的就是获得屏幕尺寸:

width=gdk_screen_width();
height=gdk_screen_height();
gtk_widget_set_size_request(window, width/2, height/2);