1

ウィンドウサイズをそれに近い値に設定できるように、最大​​化されたウィンドウのサイズを決定しようとしています。ただし、最初に最大化されたウィンドウを表示せずにそれを行う方法がわかりません。ウィンドウが表示される前に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;
}
4

1 に答える 1

2

いいえ、それは不可能です。ウィンドウマネージャがウィンドウをマップするまで、実際のサイズはわからないからです。しかし、あなたができることは画面サイズを取得することです:

width=gdk_screen_width();
height=gdk_screen_height();
gtk_widget_set_size_request(window, width/2, height/2);
于 2012-01-31T03:08:35.943 に答える