> сделал как вы посоветовали, но эффекта не получил - форма не стала дочерней
в примере ниже MainForm - это имитация главного окна ArcGis. Имея ссылку на IChildFormProxy можно вызвать метод SetParent, в который надо передать hwnd главного окна ArcGis.
using System;
using System.Windows.Forms;
public partial class MainForm : Form
{
public MainForm()
{
this.Menu = new MainMenu(new MenuItem[] {
new MenuItem("Test", new EventHandler(Test)),
});
}
private void Test(object sender, EventArgs e)
{
IChildFormProxy cfa = new ChildFormProxy();
cfa.SetParent(this.Handle);
}
}
public interface IChildFormProxy
{
void SetParent(IntPtr hwnd);
}
public class Win32Window : IWin32Window
{
public Win32Window(IntPtr hwnd)
{
_Handle = hwnd;
}
public IntPtr Handle
{
get { return _Handle; }
}
private IntPtr _Handle;
}
public class ChildFormProxy : IChildFormProxy
{
public void SetParent(IntPtr hwnd)
{
Form cf = new Form();
cf.ShowDialog(new Win32Window(hwnd));
}
}
IChildFormProxy можно определить с атрибутом [ComVisible(true)] и т.д. Т.е. реализовать COM-объект и вызвать его из ArcGis.
Данное сообщение получено с сайта GotDotNet.RU
Последний раз редактировалось 15 October 2007 09:56
|