2011-09-05 46 views
0

我写了类似gtk_window_move(w,0,0);睡眠(5);但窗口位置仅在“睡眠”呼叫之后改变。我想知道,如果你能帮我让这段代码正确工作。顺便说一句,我使用gtk_signal_connect。移动窗口中的信号功能

回答

2

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

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

  • 设置与gtk_timeout_add睡眠超时,并与gtk_main(返回从它gtk_main_quit,可能从一个回调做的工作的其余部分在回调
  • 运行一个嵌套的主循环超时
  • 运行循环迭代与gtk_main_iteration,这是最有前途的方法,因为这将是很难将其与睡眠相结合。
+0

谢谢,它的工作原理。而且我应该怎么做之前的其他行动“睡眠“c都喜欢让一些小部件可见? gdk_flush在这种情况下不起作用。 –

+0

@ im-ieee:查看修改 – jpalecek