Я ищу способ создать плавающее окно в ArcMap. Чтобы привести пример, просто посмотрите на окно инструмента «Идентифицировать».
Плавающий означает, что он всегда находится перед документом карты и что пользователь может продолжать работать с ArcMap. Я знаю, что интерфейс IDockableWindowDef может быть использован для создания закрепляемых окон, которые также могут всплывать, но я не хочу, чтобы они состыковывались . Насколько мне известно, невозможно предотвратить стыковку форм, созданных IDockableWindowManager, если, например, пользователь перемещает их к границе окна ArcMap.
Любые идеи?
Решением был поиск ключевых слов, таких как дочернее окно и MDI. НТН
Решение проблемы кажется таким же простым, как и ответ @ llcf :
MyForm form = new MyForm();
form.Show(NativeWindow.FromHandle(new IntPtr(m_application.hWnd)));
arcmap
arcobjects
c#
И один
источник
источник
Ответы:
Если в .net я думаю, что примеры, которые я видел, используют вспомогательный класс, как показано ниже:
источник
Я нашел ответ на эту проблему с помощью старых форумов ESRI. Только что использовал неправильные ключевые слова до сих пор: / Решение находится в SetWindowLong ():
Я не совсем уверен, правильно ли реализована 64-битная совместимость, потому что SetWindowLongPtr () должен был заменить SetWindowLong (), но я не смог заставить его работать на моей 64-битной машине. Всегда получал EntryPointNotFoundException. Но по крайней мере это работает с моей установкой dev.
источник
Если вы используете .NET, лучше всего создать немодальную форму Windows и установить для свойства TopMost значение true. Вы также захотите установить свойство Parent формы для приложения ArcMap.
источник