在我的应用程序中,主窗口会生成几个对话框,通常会同时打开多个对话框。在Ubuntu上,如果我最小化主窗口,则每个子对话框也将最小化。在Windows XP / Vista / 7上,对话框不会在主窗口中最小化。
在Windows上,当主应用程序最小化时,有一种方法可以使所有顶级窗口最小化。
编辑:
通过设置“窗口状态事件”的信号并手动使用gtk_window_iconify解决。
设置信号:
g_signal_connect(G_OBJECT(Main_Application), "window-state-event", G_CALLBACK(minimize_windows), NULL);
这是minimal_windows函数。
gboolean minimize_windows( GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)
{
GList *glist;
/*Returns a GList of each toplevel window*/
glist = gtk_window_list_toplevels();
/*Iconify check*/
if(event->new_window_state & GDK_WINDOW_STATE_ICONIFIED)
g_list_foreach(glist, (GFunc)gtk_window_iconify,NULL);
/* If not make sure all the windows are deiconified */
else
g_list_foreach(glist, (GFunc)gtk_window_deiconify, NULL);
g_list_free(glist);
return TRUE;
}
最佳答案
尝试使父表单成为子表单的所有者:
Form2 f2 = new Form2();
f2.Show(this);