我一直在尝试将启动画面放置在屏幕中央。在 Windows 中,这样的请求很容易使用 SetWindowPos 和一些几何算术。我发现窗口管理器忽略了所有移动窗口的请求。所以我的问题是,我怎么会看到这么多应用程序的初始屏幕正确居中?我从 GTK_WINDOW_TOPLEVEL BTW 开始,然后切换到弹出窗口尝试一些事情。设置重力和位置不会失败,它们只是被忽略。即使在 .glade 文件中定义,窗口也会被忽略。
{
GtkWidget *pNewWindow = gtk_window_new(GTK_WINDOW_POPUP);
gtk_window_move(GTK_WINDOW(pNewWindow), 0, 0);
gtk_widget_show_all(pNewWindow);
while (gtk_events_pending())
gtk_main_iteration();
gtk_widget_set_size_request(pNewWindow, width, height);
gtk_window_set_decorated(GTK_WINDOW(pNewWindow), FALSE);
// gtk_window_set_position(GTK_WINDOW(pNewWindow), GTK_WIN_POS_CENTER_ALWAYS);
gtk_window_set_resizable(GTK_WINDOW(pNewWindow), FALSE);
// gtk_window_set_gravity(GTK_WINDOW(pNewWindow), GDK_GRAVITY_CENTER);
gtk_window_move(GTK_WINDOW(pNewWindow), 0, 0);
while (gtk_events_pending())
gtk_main_iteration();
return pNewWindow;
}