2012-01-31 4 views
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; 
} 

답변

2

아니요, 창 관리자가 창을 매핑 할 때까지 실제 크기를 알 수 없으므로 불가능합니다. 그러나 당신이 할 수있는 것은 화면 크기를 얻는 것입니다 :

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

OK, 이제 보이지 않는 창을 매핑하는 WM을 얻는 방법이 있습니까? 내가 정말로하고 싶은 것은 창을 최대화 된 창만큼 크게 만드는 것입니다 (나는 이것을 반영하기 위해 내 포스트를 편집했습니다). –

+0

그런 다음 화면을 0.8 * 화면 너비 및 0.8 * 화면 높이로 설정하십시오. gtk_widget_set_size_request()를 사용하면 맵핑 할 때 크기를 설정해야합니다. – salsaman

+0

주의해야 할 다른 사항은 창 내용이 창을 확장하지 않도록하는 것입니다. 이 문제를 해결하려면 모든 창 내용을 주 창 내부의 스크롤 창 안에 넣으십시오. – salsaman