【问题标题】:Moving window in the signal function信号函数中的移动窗口
【发布时间】:2011-09-05 14:51:37
【问题描述】:

我正在写类似 gtk_window_move(w, 0, 0);睡眠(5);但窗口位置仅在“睡眠”调用后发生变化。我想知道,您是否可以帮助我使此代码正常工作。顺便说一句,我使用 gtk_signal_connect。

【问题讨论】:

    标签: c linux gtk window


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,它有效。在“睡眠”调用之前我应该​​如何处理其他操作,比如让一些小部件可见? gdk_flush 在这种情况下不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 2017-09-29
    • 2019-03-22
    相关资源
    最近更新 更多