.net - modo - ocultar barra de direcciones chrome android
Barras de título personalizadas/chrome en una aplicación WinForms (6)
Estoy casi seguro de que sé la respuesta a esta pregunta, pero espero que haya algo que haya pasado por alto.
Ciertas aplicaciones parecen tener el aspecto y la apariencia de Vista Aero en sus barras de título y botones, incluso cuando se ejecuta en Windows XP. (Como ejemplos, me vienen a la mente Google Chrome y Windows Live Photo Gallery). Sé que una forma de lograrlo con WinForms sería crear un formulario sin márgenes y dibujar la barra de título / botones usted mismo, y luego anular WndProc
para asegurarse de moverlo y redimensionarlo , y los clics con botón hacen lo que se supone que deben hacer (no tengo claro los detalles, pero probablemente podría llevarlo a cabo dado un día para leer la documentación.) Tengo curiosidad si hay una manera diferente, más fácil de la que soy con vista a. Tal vez algunas llamadas API o estilos de ventana que he pasado por alto?
Creo que Google me ha respondido mediante el uso del enfoque de "rola tu propia ventana" con Chrome. Dejaré la pregunta abierta para otro día en caso de que alguien tenga nueva información, pero creo que he respondido la pregunta yo mismo.
Google Chrome usa el SDK de Windows Vista para obtener el aspecto visual en XP. Puedes descargarlo aquí:
Al usar esto, debe habilitar la carga de retraso de las siguientes DLL para obtener el efecto Glass en XP:
- uxtheme.dll
- dwmapi.dl
No, me temo, no hay otra manera fácil de hacer esto.
Estás en el camino correcto. Tendrá que crear un Winform personalizado y luego proceder como se ilustra en este ejemplo .
Google Chrome no usa el SDK de Vista para lograr esto en XP. Si echa un vistazo a src/chrome/browser/views/frame
hay varios archivos para definir el marco del navegador según las capacidades del sistema. En XP, parece que se usa OpaqueFrame
; la línea 19 tiene esto para decir:
// 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 los recursos en src/chrome/app/theme
para dibujar los botones de marco.
Por lo tanto, parece que tengo la esperanza de que haya algún tipo de forma económica de permitir que el tema de Vista en XP se pierda. La única forma de hacerlo es dibujar manualmente el área no cliente de su ventana. Creo que algo como esto es probablemente el camino correcto, ya que permite a Windows manejar cosas que no son del cliente, como mover y cambiar el tamaño de la ventana.
A menos que alguien pueda encontrar un método para habilitar mágicamente la temática de Vista en XP, esta es la respuesta a la pregunta, pero obviamente no puedo marcar mi propia publicación como la respuesta.
Aquí hay un artículo con un ejemplo de código completo sobre cómo usar su propio "chrome" personalizado para una aplicación:
http://geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx
Esto parece algo realmente bueno. Hay un total de 3 artículos en su serie, y funciona muy bien, ¡y en Vista también!
@Jonathan Holland: ¿Es esto algo que se puede hacer desde .NET?
Sí, usando DllImport. Aquí hay una buena publicación en el blog
Owen, estoy usando Chrome en XP y no veo el tema de vidrio "Vista Aero" en la ventana de Chrome. Lo veo como azul sólido.
Si se trata de la personalización personalizada de los controles y las barras de título de Windows que desee, eso se puede lograr. Hay un excelente kit de herramientas de UI gratuito para WinForms que hace exactamente eso: KryptonToolkit