Szukam sposobu na utworzenie pływającego okna w ArcMap. Aby podać przykład, wystarczy spojrzeć na okno narzędzia Identyfikuj.
Pływający oznacza, że pozostaje on zawsze przed dokumentem mapy i że użytkownik może kontynuować pracę z ArcMap. Wiem, że interfejsu IDockableWindowDef można używać do tworzenia dokowalnych okien, które również mogą się unosić, ale nie chcę, aby były dokowane . Według mojej wiedzy nie jest możliwe zapobieganie zadokowaniu formularzy utworzonych przez IDockableWindowManager, jeśli np. Użytkownik popchnie je do granicy okna ArcMap.
Jakieś pomysły?
Rozwiązaniem było wyszukiwanie słów kluczowych, takich jak okno potomne i MDI. HTH
Rozwiązanie problemu wydaje się tak proste, jak odpowiedź @ llcf :
MyForm form = new MyForm();
form.Show(NativeWindow.FromHandle(new IntPtr(m_application.hWnd)));
arcmap
arcobjects
c#
I jeden
źródło
źródło
Odpowiedzi:
Jeśli w .net myślę, że przykłady, które widziałem, wykorzystują klasę pomocnika, jak poniżej:
źródło
Znalazłem odpowiedź na ten problem przy pomocy starszych forów ESRI. Do tej pory użyłem niewłaściwych słów kluczowych: / Rozwiązanie leży w SetWindowLong ():
Nie jestem pewien, czy zgodność 64-bitowa została zaimplementowana poprawnie, ponieważ SetWindowLongPtr () ma zastąpić SetWindowLong (), ale nie byłem w stanie zmusić go do działania na moim komputerze 64-bitowym. Zawsze otrzymywał wyjątek EntryPointNotFoundException. Ale przynajmniej działa to z moją konfiguracją programistów.
źródło
Jeśli używasz platformy .NET, najlepszym rozwiązaniem jest utworzenie niemodalnego formularza Windows i ustawienie właściwości TopMost na wartość true. Będziesz także chciał ustawić właściwość Parent formularza w aplikacji ArcMap.
źródło