using System;
using Gtk;
using Gdk;
using System.Windows.Forms;
using System.Drawing;
using System.Threading;
namespace mwfingtk
{
class MainClass
{
public static void Main (string[] args)
{
Gtk.Application.Init ();
Gtk.Window gtkWindow = new Gtk.Window ("Title");
gtkWindow.Add (new NativeContainer (InitializeMWF ().Handle));
gtkWindow.Show ();
Thread t = new Thread (Gtk.Application.Run);
t.Start ();
while (!t.IsAlive) {};
}
private static Form _mwfContainer;
private static Control InitializeMWF ()
{
_mwfContainer = new Form ();
_mwfContainer.TopLevel = false;
// run the MWF msg loop on a separate thread
Thread t = new Thread (RunMWF);
t.Start ();
while (!t.IsAlive) {};
return _mwfContainer;
}
private static void RunMWF ()
{
_mwfContainer.ShowDialog ();
}
}
public class NativeContainer : Gtk.Container
{
private IntPtr _childHandle;
public NativeContainer (IntPtr childHandle)
{
_childHandle = childHandle;
}
protected override void OnRealized ()
{
base.OnRealized ();
Gdk.Window.ForeignNew ((uint) _childHandle).Reparent (this.GdkWindow, 0, 0);
}
}
}