Por que esta janela tem cantos quadrados?


24

No Windows 7 com o tema Aero, a janela Preferências do Notepad ++ tem cantos quadrados, nenhum ícone do menu do sistema, um botão Fechar e uma 1pxborda mais escura . Esta janela também possui um AlwaysOnTopatributo.

notepad ++
(Eu redimensionei a janela para caber uma largura de 640px.)

Curiosamente, você pode copiar este estilo para outras janelas usando o AutoHotkey . Então, parece que não há truques sujos envolvidos. No entanto, acho que não vi esse estilo de janela em nenhum outro lugar.

Está usando este estilo condenado pela Microsoft? Esse tipo de janela tem um nome?


Para os curiosos: Normal vs "Square"

normal   calculadora


Eu acho (mas não tenho certeza) que o .NET framework dará um frame com cantos arredondados por padrão, e ninguém realmente sente vontade de alterá-lo.
soandos

Porque a Apple tem uma patente em cantos arredondados.
Chloe

Respostas:


37

É chamado de janela de ferramentas (barra) . Todas as janelas que tiverem o WS_EX_TOOLWINDOWestilo estendido serão renderizadas sem um menu de sistema ou caixas de minimizar / maximizar e uma pequena barra de título. No Windows XP e superior (que suportam temas), as janelas de ferramentas geralmente são renderizadas sem cantos arredondados (pelo menos com os temas padrão).

Esse estilo geralmente é usado para barras de ferramentas (Figura 1). Você pode vê-lo arrastando uma barra de ferramentas de um programa que permite reorganizar as barras de ferramentas. Observe que ela se torna uma janela parecida com aquela em questão. O Windows Explorer também o usa para deskbands (Figura 2), que são basicamente a mesma coisa. Você pode vê-los arrastando uma pasta para uma das bordas da tela e arrastando a barra de ferramentas / faixa de trabalho resultante para a área de trabalho.

Obviamente, alguns programas usam o estilo para outros propósitos, geralmente como uma maneira de criar uma espécie de diálogo temporário modal que é uma criança para o programa principal.

Nota: isso tem alguns efeitos (os dois primeiros são geralmente os motivos para o uso não padrão):

  • Uma janela / diálogo com este estilo não recebe um botão na barra de tarefas
  • Evita Alt+ Tabbing para o diálogo
  • Também impede que o Alt+ PrtScrcapture apenas o diálogo; a janela do programa pai inteiro é capturada.

Figura 1: janela da barra de ferramentas do MSPaint

insira a descrição da imagem aqui

Figura 2: faixa de trabalho do Windows Explorer

insira a descrição da imagem aqui


Aha! Isso faz sentido. :)
iglvzx

Alt+ PrintScreencaptura apenas o diálogo no Windows 7 com o diálogo Preferências do Notepad ++.
Bob

17

Isso detalha o nome desse estilo de janela e as opções disponíveis no .NET; veja a excelente resposta da @Synechech para o propósito original deste estilo de janela, as razões pelas quais ele pode ser usado para essa caixa de diálogo e a implementação em programas não gerenciados do Windows, como o Notepad ++.


A janela tem cantos quadrados e parece que, porque um dos designers / programadores do Notepad ++ decidiu usar um estilo de janela específico. A Synetech detalha as vantagens desse estilo de janela.

No .NET / Visual Studio, isso é definido na FormBorderStylepropriedade da System.Windows.Forms.Formclasse. Especificamente, é o FixedToolWindow. Os valores possíveis estão na System.Windows.Forms.FormBorderStyleenumeração.

Os ToolWindows em .NET com todos os valores padrão funcionam de forma um pouco diferente de uma planície WS_EX_TOOLWINDOWna API do Windows, embora pareçam iguais. Com os testes, eu determinei que eles não aparecem na barra de tarefas e eles não aparecem no Alt+ Tabalternador de tarefas menos que a propriedade formulário ShowInTaskbarestá definido para false. ShowInTaskbarafeta a visibilidade na barra de tarefas e Alt+ Tabpara ToolWindows, mas apenas na barra de tarefas para outras pessoas.

Enquanto isso, também é possível remover os botões ícone / minimizar / restaurar / maximizar dos estilos de janela mais comuns, embora não pareça ser possível adicioná-los a ToolWindows. Também é possível ocultar janelas normais da barra de tarefas.

A única vantagem funcional que WS_EX_TOOLWINDOWoferece, até onde eu sei, é que a janela não aparece em Alt+ Tab.


Incluí algumas capturas de tela comparando os estilos de janela do .NET. Estes não são usados ​​diretamente pelo Notepad ++, nem outros programas não gerenciados, mas são nomeados pela Microsoft, então ...

Valores possíveis de FormBorderStyle:

A primeira imagem é uma captura de tela do programa em execução com o Aero ativado, a segunda é a partir da exibição do designer do Visual Studio (sem Aero).
Clique nas imagens para as versões em tamanho real As
descrições são retiradas do artigo do MSDN sobre a FormBorderStyleenumeração.

  • None

    Sem borda.

Screenshot_Aero Screenshot_NonAero

  • FixedSingle

    Uma borda fixa de linha única.

Screenshot_Aero Screenshot_NonAero

  • Fixed3D

    Uma borda tridimensional fixa.

Screenshot_Aero Screenshot_NonAero

  • FixedDialog

    Uma borda de estilo de diálogo espessa e fixa.

Screenshot_Aero Screenshot_NonAero

  • Sizable (padrão)

    Uma borda redimensionável.

Screenshot_Aero Screenshot_NonAero

  • FixedToolWindow

    Uma borda de janela de ferramenta que não é redimensionável. Uma janela de ferramenta não aparece na barra de tarefas ou na janela que aparece quando o usuário pressiona ALT+ TAB. Embora os formulários que FixedToolWindowsão especificados normalmente não sejam mostrados na barra de tarefas, você também deve garantir que a ShowInTaskbarpropriedade esteja definida como false, pois seu valor padrão é true.

Screenshot_Aero Screenshot_NonAero

  • SizableToolWindow

    Uma borda de janela de ferramenta redimensionável. Uma janela de ferramenta não aparece na barra de tarefas ou na janela que aparece quando o usuário pressiona ALT+ TAB.

Screenshot_Aero Screenshot_NonAero


sim! que o que nós estávamos falando.
avirk

Não tem nada a ver com código gerenciado / não gerenciado ou nativo / .NET. É simplesmente uma questão de como o Windows WS_EX_TOOLWINDOWestiliza as janelas com o estilo. .NET simplesmente aliases FixedToolWindowpara WS_EX_TOOLWINDOWe SizableToolWindowpara WS_EX_TOOLWINDOW|WS_THICKFRAME. Sem ofensa, mas esta resposta não responde realmente à pergunta ou explica o comportamento solicitado, é simplesmente uma lista / recurso de diferentes estilos de janela usados ​​no .NET.
Synetech

@Synetech Estou ciente de que não tem nada a ver com se o código é gerenciado ou não, eu apenas pensei em fornecer o nome .NET e as outras opções disponíveis, com capturas de tela das diferenças. Does this type of window have a name?Ele responde muito, pelo menos da perspectiva de um programador .NET. E explicação? Porque o programador sentiu vontade de usá-lo. Você listou possíveis efeitos desejados. É sobre isso. Seja recomendado ou condenado pela MS, não faço ideia. Pessoalmente, acho que você fez um trabalho admirável ao explicá-lo.
Bob

É para isso que as edições são.
Synetech

O que é isso @Synetech?
Bob
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.