Pergunta

Tenho quase certeza de que sei a resposta para essa pergunta, mas espero que tenha esquecido algo.

Certos aplicativos parecem ter a aparência do Vista Aero em suas barras e botões de legenda, mesmo quando executados no Windows XP.(Google Chrome e Windows Live Photo Gallery vêm à mente como exemplos.) Eu sei que uma maneira de fazer isso no WinForms seria criar um formulário sem borda e desenhar você mesmo a barra/botões de legenda e, em seguida, substituir WndProc para garantir que a movimentação, o redimensionamento e os cliques nos botões façam o que deveriam fazer (não tenho certeza dos detalhes, mas provavelmente conseguiria fazer isso com um dia para ler a documentação). maneira mais fácil que estou ignorando.Talvez tenha esquecido algumas chamadas de API ou estilos de janela?

Acredito que o Google respondeu para mim usando a abordagem de abrir sua própria janela com o Chrome.Deixarei a pergunta em aberto para outro dia caso alguém tenha novas informações, mas acredito que eu mesmo respondi a pergunta.

Foi útil?

Solução

Aqui está um artigo com um exemplo de código completo sobre como usar seu próprio "chrome" personalizado para um aplicativo:

http://geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx

Isso parece uma coisa realmente boa.Há um total de 3 artigos em sua série, e funciona muito bem, e no Vista também!

Outras dicas

Google Chrome é não usando o Vista SDK para conseguir isso no XP.Se você espiar src\chrome\browser\views\frame existem vários arquivos para definir o quadro do navegador dependendo das capacidades do sistema.No XP, parece OpaqueFrame é usado;a linha 19 tem isto a dizer:

// OpaqueFrame
//
//  OpaqueFrame is a CustomFrameWindow subclass that in conjunction with
//  OpaqueNonClientView provides the window frame on Windows XP and on Windows
//  Vista when DWM desktop compositing is disabled. The window title and
//  borders are provided with bitmaps.

Parece que está usando os recursos em src\chrome\app\theme para desenhar os botões da moldura.

Portanto, parece que minhas esperanças de que haja algum tipo de maneira barata de ativar os temas do Vista no XP foram frustradas.A única maneira de fazer isso é desenhar manualmente a área não cliente da sua janela.Eu acredito algo assim é provavelmente o caminho certo, pois permite que o Windows lide com coisas não relacionadas ao cliente, como mover e redimensionar a janela.

A menos que alguém consiga encontrar um método para ativar magicamente o tema do Vista no XP, esta é a resposta para a pergunta, mas obviamente não posso marcar minha própria postagem como a resposta.

Owen, estou usando o Chrome no XP e não vejo o tema de vidro "Vista Aero" na janela do Chrome.Eu vejo isso como azul sólido.

Se você deseja um tema personalizado de controles e barras de título do Windows, isso pode ser feito.Existe um excelente kit de ferramentas de UI gratuito para WinForms que faz exatamente isso: Kit de ferramentas Krypton

@Jonathan Holanda:Isso é algo que pode ser feito no .NET?

Sim, usando DllImport. Aqui é uma boa postagem no blog

O Google Chrome usa o SDK do Windows Vista para obter a aparência de vidro no XP.Você pode baixá-lo aqui:

http://www.microsoft.com/downloads/details.aspx?FamilyID=4377f86d-c913-4b5c-b87e-ef72e5b4e065&displaylang=en

Usando isso, você precisa ativar o atraso no carregamento das seguintes DLLs para obter o Efeito Vidro no XP:

  • uxtheme.dll
  • dwmapi.dl

Não, infelizmente, não há outra maneira fácil de fazer isso.

Você está no caminho certo.Você precisará criar um Winform personalizado e então proceder conforme ilustrado neste exemplo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top