¿Por qué esta ventana tiene esquinas cuadradas?

24

En Windows 7 con el tema Aero, la ventana de Preferencias de Notepad ++ tiene esquinas cuadradas, ningún ícono del menú del sistema, un botón de cierre y un 1pxborde más oscuro . Esta ventana también tiene un AlwaysOnTopatributo.

Bloc de notas ++
(Cambié el tamaño de la ventana para que se ajuste a un ancho de 640px).

Curiosamente, puede copiar este estilo a otras ventanas usando AutoHotkey . Entonces, parece que no hay trucos sucios involucrados. Sin embargo, no creo haber visto este estilo de ventana en ningún otro lugar.

¿Está usando este estilo condenado por Microsoft? ¿Este tipo de ventana tiene un nombre?


Para los curiosos: Normal vs "Cuadrado"

normal   calculadora

iglvzx
fuente
Creo (pero no estoy seguro) que .NET Framework dará un marco con esquinas redondeadas de forma predeterminada, y nadie realmente quiere cambiarlo.
soandos
Porque Apple tiene una patente en las esquinas redondeadas.
Chloe

Respuestas:

37

Se llama una ventana de herramientas (barra) . Cualquier ventana que tenga el WS_EX_TOOLWINDOWestilo extendido se representará sin un menú del sistema o cuadros de minimizar / maximizar, y una pequeña barra de título. En Windows XP y versiones posteriores (que admiten temas), las ventanas de herramientas generalmente se representan sin esquinas redondeadas (al menos con los temas predeterminados).

Este estilo se usa generalmente para barras de herramientas (Figura 1). Puede verlo arrastrando una barra de herramientas fuera de un programa que le permite reorganizar las barras de herramientas. Tenga en cuenta que se convierte en una ventana que se parece a la que está en cuestión. Windows Explorer también lo usa para las bandas de escritorio (Figura 2), que son básicamente lo mismo. Puede verlos arrastrando una carpeta a uno de los bordes de la pantalla, luego arrastre la barra de herramientas / banda de escritorio resultante al escritorio.

Obviamente, algunos programas usan el estilo para otros fines, a menudo como una forma de crear una especie de diálogo modal y temporal que es un elemento secundario del programa principal.

Nota: esto tiene un par de efectos (los dos primeros de los cuales generalmente son las razones de su uso no estándar):

  • Una ventana / diálogo con este estilo no obtiene un botón en la barra de tareas
  • Impide Alt+ Tabbing al diálogo
  • También evita que Alt+ PrtScrcapture solo el diálogo; se captura toda la ventana del programa principal.

Figura 1: ventana de la barra de herramientas de MSPaint

ingrese la descripción de la imagen aquí

Figura 2: banda de escritorio de Windows Explorer

ingrese la descripción de la imagen aquí

Synetech
fuente
¡Ajá! Eso tiene sentido. :)
iglvzx
Alt+ PrintScreencaptura solo el cuadro de diálogo en Windows 7 con el cuadro de diálogo Preferencias de Notepad ++.
Bob
17

Esto detalla el nombre de este estilo de ventana y las opciones disponibles en .NET; vea la excelente respuesta de @ Synetech para el propósito original de este estilo de ventana, las razones por las que puede usarse para dicho cuadro de diálogo y la implementación en programas de Windows no administrados como Notepad ++.


La ventana tiene esquinas cuadradas y se ve así porque uno de los diseñadores / programadores de Notepad ++ decidió usar un estilo de ventana específico. Synetech detalla las ventajas de ese estilo de ventana.

En .NET / Visual Studio, esto se establece en la FormBorderStylepropiedad de la System.Windows.Forms.Formclase. Específicamente, es el FixedToolWindow. Los valores posibles están en la System.Windows.Forms.FormBorderStyleenumeración.

Los ToolWindows en .NET con todos los valores predeterminados funcionan de manera un poco diferente de un plano WS_EX_TOOLWINDOWen la API de Windows, aunque se ven iguales. Con las pruebas, he determinado que no aparecen en la barra de tareas y que no aparecen en el Alt+ Tabconmutador de tareas a menos que la propiedad de formulario ShowInTaskbarse establece en false. ShowInTaskbarafecta la visibilidad tanto en la barra de tareas como en Alt+ Tabpara ToolWindows, pero solo en la barra de tareas para otros.

Mientras tanto, también es posible eliminar los botones de icono / minimizar / restaurar / maximizar de los estilos de ventana más comunes, aunque no parece posible agregarlos a ToolWindows. También es posible ocultar ventanas normales de la barra de tareas.

La única ventaja funcional que WS_EX_TOOLWINDOWofrece, por lo que puedo decir, es que la ventana no aparece en Alt+ Tab.


He incluido algunas capturas de pantalla que comparan los estilos de ventana .NET. Estos no son utilizados directamente por Notepad ++, ni otros programas administrados, pero son nombrados por Microsoft, así que ...

Posibles valores de FormBorderStyle:

La primera imagen es una captura de pantalla del programa en ejecución con Aero habilitado, la segunda es de la vista del diseñador de Visual Studio (no Aero).
Haga clic en las imágenes para ver las versiones a tamaño completo. Las
descripciones se toman del artículo de MSDN sobre la FormBorderStyleenumeración.

  • None

    Sin bordes.

Captura de pantalla_Aero Screenshot_NonAero

  • FixedSingle

    Un borde fijo de una sola línea.

Captura de pantalla_Aero Screenshot_NonAero

  • Fixed3D

    Un borde tridimensional fijo.

Captura de pantalla_Aero Screenshot_NonAero

  • FixedDialog

    Un borde grueso y fijo de estilo de diálogo.

Captura de pantalla_Aero Screenshot_NonAero

  • Sizable (defecto)

    Un borde redimensionable.

Captura de pantalla_Aero Screenshot_NonAero

  • FixedToolWindow

    Un borde de ventana de herramienta que no es redimensionable. Una ventana de herramientas no aparece en la barra de tareas o en la ventana que aparece cuando el usuario presiona ALT+ TAB. Aunque los formularios que especifican FixedToolWindownormalmente no se muestran en la barra de tareas, también debe asegurarse de que la ShowInTaskbarpropiedad esté establecida en false, ya que su valor predeterminado es true.

Captura de pantalla_Aero Screenshot_NonAero

  • SizableToolWindow

    Un borde de ventana de herramientas redimensionable. Una ventana de herramientas no aparece en la barra de tareas o en la ventana que aparece cuando el usuario presiona ALT+ TAB.

Captura de pantalla_Aero Screenshot_NonAero

Mover
fuente
¡Sí! de lo que estábamos hablando
avirk
No tiene nada que ver con código administrado / no administrado o nativo / .NET. Es simplemente una cuestión de cómo Windows estiliza ventanas con el WS_EX_TOOLWINDOWestilo. .NET simplemente alias FixedToolWindowto WS_EX_TOOLWINDOWy SizableToolWindowto WS_EX_TOOLWINDOW|WS_THICKFRAME. Sin ofender, pero esta respuesta en realidad no responde a la pregunta ni explica el comportamiento que se hace, es simplemente una lista / recurso de diferentes estilos de ventana utilizados en .NET.
Synetech
@Synetech Soy consciente de que no tiene nada que ver con si el código se administra o no, solo pensé en dar el nombre que usa .NET y las otras opciones disponibles, con capturas de pantalla de las diferencias. Does this type of window have a name?Responde tanto, al menos desde la perspectiva de un programador .NET. Y explicacion? Porque el programador tenía ganas de usarlo. Has enumerado los posibles efectos deseados. Eso es todo. Ya sea que MS lo recomiende o lo condene, no tengo idea. Personalmente, creo que has hecho un trabajo admirable al explicarlo.
Bob
Para eso están las ediciones.
Synetech
¿Qué es eso @Synetech?
Bob