在信号功能中移动窗口

时间:2011-09-05 14:51:37

标签: c linux gtk window

我写的是像gtk_window_move(w,0,0);睡眠(5);但窗口位置仅在“睡眠”调用后才会改变。我想知道,如果你能帮助我使这段代码正常工作。顺便说一句,我使用gtk_signal_connect。

1 个答案:

答案 0 :(得分:2)

您必须调用gdk_flush函数才能将命令实际发送到服务器。请注意,这只是因为sleep调用,您不应该使用它(应用程序在此期间无响应);如果你使用g_timeout_add,gdk会自动刷新X命令队列。

关于使小部件可见:这是一个需要程序和服务器之间双向通信的操作,基本上,服务器要求客户端绘制窗口,客户端响应命令来绘制它。在Gtk中,这意味着你必须让主循环运行。之一:

  • 使用gtk_timeout_add设置睡眠超时,并在回调中完成其余工作
  • 使用gtk_main运行嵌套的主循环(从gtk_main_quit返回,可能来自超时的回调
  • 使用gtk_main_iteration运行循环迭代。这是最没有前途的方法,因为很难将它与睡眠结合起来。