0

私のアプリケーションでは、メイン ウィンドウが複数のダイアログを生成します。多くの場合、複数のダイアログが同時に開かれます。Ubuntu では、メイン ウィンドウを最小化すると、各子ダイアログも最小化されます。Windows XP/Vista/7 では、ダイアログはメイン ウィンドウで最小化されません。

Windows で、メイン アプリケーションが最小化されたときにすべてのトップ レベル ウィンドウを最小化する方法はありますか。

編集:「window-state-event」のシグナルを設定し、手動で 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;
}
4

1 に答える 1

0

親フォームを子フォームの所有者にしてみてください。

Form2 f2 = new Form2();
f2.Show(this);
于 2012-07-06T18:33:56.977 に答える