我开发了一个用C ++ / wxWidgets编写的应用程序,它具有用于编写脚本和插件的嵌入式.NET运行库。
我想使用gtk#作为插件GUI,但是由于gtk事件循环没有启动,GUI没有响应(这是Windows上的wxWidgets,所以它不使用gtk作为后端)。
这可以通过在wxWidgets空闲处理期间泵送事件循环来解决:
public void OnWxWidgetsIdle()
{
while(Gtk.Application.EventsPending())
Gtk.Application.RunIteration();
}
然而,这似乎不会触发gtk#idle事件,因此依赖于空闲事件的GUI小部件(例如文本框中闪烁的光标)无法正确更新。
有谁知道我如何强制发送gtk#idle事件,或者解决此问题的任何其他替代解决方案?
亲切的问候,
Andrew Ward。
答案 0 :(得分: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;
}
<强>参考强>