Ich suche nach einer Möglichkeit, ein schwebendes Fenster in ArcMap zu erstellen. Um ein Beispiel zu geben, schauen Sie einfach in das Fenster des Identifizierungswerkzeugs.
Floating bedeutet, dass es jederzeit vor dem Kartendokument bleibt und der Benutzer weiterhin mit ArcMap arbeiten kann. Ich weiß, dass die Schnittstelle IDockableWindowDef verwendet werden kann, um andockbare Fenster zu erstellen, die auch schweben können, aber ich möchte nicht, dass sie andocken . Meines Wissens ist es nicht möglich, das Andocken von von IDockableWindowManager erstellten Formularen zu verhindern, wenn der Benutzer sie beispielsweise an den Rand des ArcMap-Fensters schiebt.
Irgendwelche Ideen?
Die Lösung bestand darin, nach Schlüsselwörtern wie untergeordnetem Fenster und MDI zu suchen. HTH
Die Lösung des Problems scheint so einfach zu sein wie die Antwort von @ llcf :
MyForm form = new MyForm();
form.Show(NativeWindow.FromHandle(new IntPtr(m_application.hWnd)));
quelle
Antworten:
Wenn ich denke, dass in .net die Beispiele, die ich gesehen habe, eine Hilfsklasse wie folgt verwenden:
quelle
Die Antwort auf dieses Problem habe ich mit Hilfe der älteren ESRI-Foren gefunden. Hatte gerade die falschen Schlüsselwörter verwendet: / Die Lösung liegt in SetWindowLong ():
Ich bin mir nicht ganz sicher, ob die 64-Bit-Kompatibilität richtig implementiert ist, da SetWindowLongPtr () SetWindowLong () ersetzen soll, aber ich konnte es auf meinem 64-Bit-Computer nicht zum Laufen bringen. Ich habe immer eine EntryPointNotFoundException erhalten. Aber zumindest funktioniert das mit meinem Entwickler-Setup.
quelle
Wenn Sie .NET verwenden, ist es am besten, ein modellloses Windows Form zu erstellen und die TopMost-Eigenschaft auf true zu setzen. Sie möchten auch die übergeordnete Eigenschaft des Formulars für die ArcMap-Anwendung festlegen.
quelle