2010-07-24 13 views
7

Pedí la programación de la quinta edición de Windows hace unos días y comencé a trabajar con ella.¿Cómo puedo hacer que la ventana de la API de Win32 sea más moderna?

Estoy empezando a aprender la API de Win32, sin embargo, tengo una pregunta. Las ventanas no tienen un estilo moderno de winxp/win vista/win 7. ¿Cómo puedo solucionar esto?

Actualmente se ve así, fuente de mierda y todo.

enter image description here

Gracias de antemano!

Machiel

+0

¿Eres completamente nuevo en la programación? Si es así, le recomiendo que eche un vistazo a esto: http://www.microsoft.com/express/windows/ –

+2

@Camilo Martin: los diseñadores visuales en Visual Studio son solo para proyectos administrados. No funcionan para C y C++. –

+0

@Billy mi punto es que debería considerar Visual Basic en su lugar. O Delphi si le gusta el rendimiento de C. –

Respuesta

10

Para obtener el derecho de fuente que debe llamar a esto después de CreateWindow(Ex):

NONCLIENTMETRICS ncm; 
ncm.cbSize = sizeof(NONCLIENTMETRICS); 
::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0); 
HFONT hFont = ::CreateFontIndirect(&ncm.lfMessageFont); 
::SendMessage(hwnd, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0)); 
+4

Lo siento, pero esto no es correcto y no debe marcarse como la respuesta, consulte http://blogs.msdn.com/b/oldnewthing/archive/2005/07/07/436435.aspx – Anders

+1

No es incorrecto . – StackedCrooked

+3

¿Revisaste mi enlace? Incluso te dice cuál es la API correcta "Se creó durante el desarrollo de Windows 95 con la esperanza de convertirse en la nueva fuente de GUI predeterminada, pero en julio de 1994, Windows dejó de usarla a favor de las diversas fuentes devueltas por la función SystemParametersInfo" – Anders

4

Usted no, al parecer, en realidad leer el libro. Usted está buscando WM_SETFONT. Hay una razón por la cual los controles comunes no son lo primero que cubre el libro.

+0

Me encanta recibir votos indirectos al azar sin siquiera un comentario maldito sobre por qué. ¡NO! –

+0

+1 porque su punto es válido. –

+1

Creo que los votos a favor son porque está buscando más que fuentes, está buscando un estilo más moderno en general. (Sin saber nada sobre el asunto, supongo que hay un conjunto de widgets diferente y posiblemente un conjunto de API completamente diferente, involucrado de alguna manera). Tenga en cuenta que no dejé un voto negativo. – fennec

0

Es posible que desee publicar algunas capturas de pantalla de exactamente de qué diferencias está hablando, esto ayudaría a averiguar lo que necesita cambiar.

En general, diría que probablemente necesite incluir un manifiesto de apropiadamente con su aplicación para que su aplicación use los últimos controles comunes.

Además, en la actualidad la mayoría de la IU no se desarrolla con el código de estilo SDK, esto es muy difícil de programar/mantener, en su lugar utiliza algún tipo de biblioteca de IU, MFC como mínimo.

+0

Estilos visuales ya están habilitados. Un poco raro. Pero es la quinta edición ... –

2

Es posible que desee comprobar GetThemeSysFont para llenar un LOGFONT de una fuente apropiada de sistemas, crear utilizando CreateFontIndirect y WM_SETFONT para asignar a cada control que se crea.

Que yo sepa, no hay forma de establecer un valor predeterminado diferente para las ventanas recién creadas en su aplicación. Tampoco hay una forma de configurar todas las ventanas que ya ha creado en un solo paso (es decir, en lugar de simplemente recorrerlas todas o asignarlas individualmente). La excepción son los cuadros de diálogo que, cuando se crean a partir de recursos, permiten que el recurso especifique la fuente utilizada para todos los controles en el cuadro de diálogo.

+2

No, no desea utilizar DEFAULT_GUI_FONT, consulte http://blogs.msdn.com/b/oldnewthing/archive/2005/07/07/436435.aspx – Anders

+0

Hm, bueno llamada. Actualizado. –

Cuestiones relacionadas