2011-04-06 13 views
7

En primer lugar, quiero mencionar que ya he leído todos los artículos sobre SO sobre el tema, pero todavía no tengo respuesta para mi pregunta. También mi pregunta es ligeramente diferente que otras.
Hoy tengo un vistazo en la ventana de Skype. Hay un botón extra en su barra de título. Pero este botón actúa como botón del sistema nativo. Basta con mirar encendido, se extiende fuera de la ventana. Entonces tengo la pregunta razonable. De acuerdo con lo que podemos ver en la imagen a continuación, hay una forma estándar de agregar un botón adicional en la barra de título. Pero todas las respuestas en subj llevan al enganche del evento WM_NCPAINT y al dibujo manual del botón adicional. Este enfoque es un trabajo, pero no podría producir un brillo tan bello como en la imagen.
¿Alguien sabe cómo agregar un botón normalizado en la barra de título de la ventana? ¡Gracias de antemano!
enter image description here¿Cómo agregar un botón adicional a la barra de título de la ventana para que funcione como estándar?

+0

creo que todo el botón de la barra de título podría ser uno personalizado – anishMarokey

+0

@anishMarokey . Sí, tengo la misma suposición, pero ¿cómo lograr tal brillo? –

Respuesta

3

En Vista y Windows 7 hay algo nuevo llamado Desktop Window Manager. Esto se usa para dibujar las barras de título de la ventana "Aero glass" y hacer los efectos de brillo. El antiguo enfoque de Windows XP de implementar controladores WM_NCPAINT no funciona con este nuevo sistema, por lo que debe usar una API completamente nueva.

Estoy seguro de que he visto algunos artículos sobre cómo hacer lo que pregunta, pero no los puedo encontrar en este momento. Algunas páginas que pueden dar algunas pistas son:

+0

Su tercer enlace apunta a esta pregunta, así que supongo que no será muy útil;) –

+0

Sí, el tercer enlace trae un bucle muerto en esta pregunta :) De cualquier forma gracias por la respuesta, exploraré todos los enlaces cuidadosamente –

+1

Disculpe, Copié desde una página diferente, pero debo haber perdido la URL en la traducción. (Aunque hay una respuesta muy buena sobre la pregunta a la que me he vinculado :-) –

1

Sí, esto puede ser (y, sin duda, es ) hecho enganchando WM_NCPAINT y pintando su botón en respuesta a la misma. El "brillo" es solo cuestión de escoger el color y el sombreado apropiados (y posiblemente hacer un poco de mezcla alfa para que aparezca algo "brillante" cerca del botón).

+0

¡Guau! ¡Gracias, Jerry, por tu respuesta! ¿Me puede aconsejar de una manera que pueda aprender más sobre sombrear tales cosas? –

+0

@ Antón: Creo que la mayoría de las cosas pequeñas como esta se hacen a mano en algo como Photoshop. La alternativa tópica sería crear un modelo 3D del frente curvo para el botón, renderizarlo en algo como DirectX u OpenGL, y capturar lo que crea y usarlo como un mapa de bits para dibujar su botón. –

Cuestiones relacionadas