Estoy buscando una manera de crear una ventana flotante en ArcMap. Para dar un ejemplo, solo mira la ventana de la herramienta Identificar.
Flotante significa que permanece delante del documento de mapa en todo momento y que el usuario puede continuar trabajando con ArcMap. Sé que la interfaz IDockableWindowDef se puede usar para crear ventanas acoplables que también pueden flotar, pero no quiero que se acoplen . Que yo sepa, no es posible evitar que los formularios creados por IDockableWindowManager se acoplen, por ejemplo, si el usuario los empuja hasta el borde de la ventana de ArcMap.
¿Algunas ideas?
La solución fue buscar palabras clave como ventana secundaria y MDI. HTH
La solución del problema parece ser tan fácil como la respuesta de @ llcf :
MyForm form = new MyForm();
form.Show(NativeWindow.FromHandle(new IntPtr(m_application.hWnd)));
fuente
Respuestas:
Si en .net, creo que los ejemplos que he visto usan una clase auxiliar como se muestra a continuación:
fuente
Encontré la respuesta a este problema con la ayuda de los foros de ESRI más antiguos. Solo había usado las palabras clave incorrectas hasta ahora: / La solución está en SetWindowLong ():
No estoy muy seguro de si la compatibilidad de 64 bits se implementa correctamente porque se supone que SetWindowLongPtr () reemplaza a SetWindowLong () pero no pude hacer que funcione en mi máquina de 64 bits. Siempre tengo una EntryPointNotFoundException. Pero al menos esto funciona con mi configuración de desarrollo.
fuente
Si está utilizando .NET, la mejor opción es crear un formulario de Windows sin modo y establecer la propiedad TopMost en verdadero. También querrá establecer la propiedad principal del formulario en la aplicación ArcMap.
fuente