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 borda 1px mais escura. Esta janela também possui um atributo AlwaysOnTop .


(redimensioneiajanelaparacaberemumalargurade640px.)

Curiosamente,vocêpodecopiaresteestiloparaoutrasjanelasusandoo 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 esse estilo condenado pela Microsoft? Esse tipo de janela tem um nome?

Para os curiosos: Normal vs. "Quadrado"

    
por iglvzx 14.06.2012 / 05:22

2 respostas

37

É chamada de Janela de ferramentas (barra) . Todas as janelas que tiverem o estilo estendido WS_EX_TOOLWINDOW serão renderizadas sem um menu do sistema ou minimizar / maximizar caixas 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 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 ver isso 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 um tipo de diálogo modal e temporário que é uma criança para o programa principal.

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

  • Uma janela / caixa de diálogo com este estilo não recebe um botão na barra de tarefas
  • Previne Alt + a aba do diálogo
  • Também impede que a Alt + PrtScr capture apenas o diálogo; a janela inteira do programa pai é capturada.

Figura 1: janela da barra de ferramentas do MSPaint

Figura2:faixadetrabalhodoWindowsExplorer

    
por 14.06.2012 / 05:41
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 desse 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 se parece com isso 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 no FormBorderStyle propriedade da classe System.Windows.Forms.Form . Especificamente, é o FixedToolWindow . Os valores possíveis estão na System.Windows.Forms.FormBorderStyle enumeração.

O ToolWindow s no .NET com todos os valores padrão funciona de forma um pouco diferente de um WS_EX_TOOLWINDOW na API do Windows, embora pareçam iguais. Com o teste, determinei que eles fazem aparecem na barra de tarefas e aparecem na aba Alt + alternador de tarefas, a menos que a propriedade de formulário ShowInTaskbar esteja definida como false . ShowInTaskbar afeta a visibilidade na barra de tarefas e Alt + Tab para ToolWindow s, mas apenas na barra de tarefas para outros.

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

A única vantagem funcional WS_EX_TOOLWINDOW oferece, 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 diretamente usados 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 visualização do designer do Visual Studio (não Aero).
Clique nas imagens para ver o conteúdo completo versões de tamanho
As descrições são retiradas do artigo do MSDN em a enumeração FormBorderStyle .

  • None

    No border.

  • FixedSingle

    Afixed,single-lineborder.

  • Fixed3D

    Afixed,three-dimensionalborder.

  • FixedDialog

    Athick,fixeddialog-styleborder.

  • Sizable(padrão)

    Aresizableborder.

  • FixedToolWindow

    Atoolwindowborderthatisnotresizable.AtoolwindowdoesnotappearinthetaskbarorinthewindowthatappearswhentheuserpressesALT+TAB.AlthoughformsthatspecifyFixedToolWindowtypicallyarenotshowninthetaskbar,youmustalsoensurethattheShowInTaskbarpropertyissettofalse,sinceitsdefaultvalueistrue.

  • SizableToolWindow

    Aresizabletoolwindowborder.AtoolwindowdoesnotappearinthetaskbarorinthewindowthatappearswhentheuserpressesALT+TAB.

    
por 14.06.2012 / 06:01