2

スクリプトとプラグイン用の .NET ランタイムが組み込まれた C++/wxWidgets で記述されたアプリケーションを開発しています。

プラグイン GUI に gtk# を使用したいのですが、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 に答える