2

我开发了一个使用 C++/wxWidgets 编写的应用程序,它具有用于脚本和插件的嵌入式 .NET 运行时。

我想将 gtk# 用于插件 GUI,但是由于尚未启动 gtk 事件循环,GUI 没有响应(这是 Windows 上的 wxWidgets,因此它不使用 gtk 作为后端)。

这可以通过在 wxWidgets 空闲处理期间泵送事件循环来解决:

public void OnWxWidgetsIdle()
{
    while(Gtk.Application.EventsPending())
        Gtk.Application.RunIteration();
}

但是,这似乎不会触发 gtk# 空闲事件,因此依赖于空闲事件的 GUI 小部件(例如文本框中的闪烁光标)不会正确更新。

有谁知道我如何强制发送 gtk# 空闲事件,或任何其他解决此问题的替代方案?

亲切的问候,

安德鲁·沃德。

4

1 回答 1

0

在 Mono 端使用空闲处理程序:

void Start ()
    {
    GLib.Idle.Add (new IdleHandler (OnIdleCreateThumbnail));
    }

bool OnIdleCreateThumbnail ()
    {
    Image img = GetNextImage ();

    // If no more images remain, stop the idle handler.
    if (img == null)
       return false; 

    CreateThumbnail (img, img.ToString () + ".thumbnail");

    // There are more images, invoke this routine again on the next Idle moment.
    return true;           
    }

参考

于 2013-12-10T18:13:48.223 回答