如何使用调整大小和移动属性工作创建没有标题栏的gtk +窗口

时间:2014-05-05 07:20:30

标签: c gtk

如何通过调整大小和移动属性来创建没有标题栏的gtk +窗口。 我检查了gtk_window_set_decorated函数,但它禁用了调整大小和移动窗口的功能。我找到了this answer already,但我认为它与它无关。

我尝试在gtk_window_set_decorated之后设置resizeable true但仍无法正常工作

请检查代码

    #include <gtk/gtk.h>
    int main (int argc,
    char *argv[])
    {  
      GtkWidget *window;
      /* Initialize GTK+ and all of its supporting libraries. */
      gtk_init (&argc, &argv);
      /* Create a new window, give it a title and display it to the user. */
      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      gtk_window_set_title (GTK_WINDOW (window), "Hello World");
      gtk_window_set_decorated (GTK_WINDOW (window), FALSE);
      gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
      //gtk_window_set_gravity(GTK_WINDOW (window), GDK_GRAVITY_NORTH_EAST);
      //gtk_window_set_deletable (GTK_WINDOW (window), FALSE);
      gtk_widget_show (window);
      /* Hand control over to the main loop. */
      gtk_main ();
      return 0;
    }

1 个答案:

答案 0 :(得分:0)

因此,我发现可以工作的是删除gtk_window_set_decorated设置为FALSE的标头。然后手动更改光标并调用gtk_window_begin_resize_drag()以在按下鼠标时开始调整大小。

我的实现方式是检查鼠标是否在mousemove回调的边框附近,如果是,则用gdk_window_set_cursor()更改光标。

在边界附近的mousedown事件中,我用适当的边界调用gtk_window_begin_resize_drag()