使用主应用程序窗口使自己的Windows最小化

时间:2012-07-06 17:42:23

标签: c windows gtk

在我的应用程序中,主窗口会生成几个对话框,通常会同时打开多个对话框。在Ubuntu上,如果我最小化主窗口,每个子对话框也被最小化。在Windows XP / Vista / 7上,对话框不会在主窗口中最小化。

在Windows上,有没有办法让所有顶级窗口在主应用程序最小化时最小化。

编辑: 通过设置“窗口状态事件”的信号并使用gtk_window_iconify手动解决。

设置信号:

g_signal_connect(G_OBJECT(Main_Application),  "window-state-event", G_CALLBACK(minimize_windows), NULL);

这是minimize_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;
}

1 个答案:

答案 0 :(得分:0)

尝试将父表单设为子表单的所有者:

Form2 f2 = new Form2();
f2.Show(this);