2008-08-12 15 views
5

Estoy actualizando algunos de nuestros códigos heredados de C++ para usar el "paquete de características MFC" que Microsoft lanzó para Visual Studio 2008. Hemos utilizado las nuevas clases para derivar nuestra aplicación de CFrameWndEx, y están aplicando los estilos de Office 2007 para darle a nuestra aplicación una apariencia más moderna. Esto nos da títulos de ventana llenos de degradado, barras de estado, etc., y el uso de las barras de herramientas de cinta.Averigüe qué colores están en uso cuando usa el paquete de características MFC en el estilo de Office 2007

Sin embargo, nuestra aplicación contiene algunos controles dibujados por el propietario, y me gustaría actualizarlos para que coincidan con el esquema de colores utilizado por el paquete de características. Idealmente, me gustaría conocer los colores claros y sombreados de la barra de herramientas que están actualmente en uso.

He tenido una cacería alrededor de la documentación y la web y aún no he encontrado nada. ¿Alguien sabe cómo encontrar esta información?

[Editar]

En particular, necesitamos saber qué colores se utilizan en tiempo de ejecución. Puede cambiar el aspecto de su aplicación en tiempo de ejecución utilizando la nueva función estática CMFCVisualManager :: SetDefaultManager.

La siguiente página de MSDN que muestra qué tipo de estilos están disponibles, en particular, el aspecto Office2007: link to msdn

Respuesta

2

¿Has mirado en el código fuente de MFC, que encontrará en algo así como

C: \ Archivos de programa \ Microsoft Visual Studio 9.0 \ VC \ atlmfc \ src \ mfc

0

Te supongo podría usar su editor de imágenes favorito y elegir los colores de una captura de pantalla.

0

"Supongo que podría usar su editor de imágenes favorito y elegir los colores de una captura de pantalla".

Esto es esencialmente lo que estoy haciendo en este momento, y he definido una lista de constantes de las que saco los colores. ¡No parece muy elegante!

0

Parece que CMFCVisualManager ofrece varios métodos para obtener información de color, p.

CMFCVisualManager::GetSmartDockingBaseGuideColors() 
CMFCVisualManager::GetToolbarHighlightColor() 

Eche un vistazo a los documentos de MSDN para CMFCVisualManager.

0

@GateKiller, el OP no está desarrollando un complemento de Office 2007, por lo que las pautas de la interfaz de usuario realmente no serán de ayuda. Es una aplicación MFC que usa el Visual C++ 2008 Feature Pack que permite que las aplicaciones MFC adopten la apariencia de Office 2007.

1

Parece que CMFCVisualManager ofrece varios métodos para obtener información de color, p.

CMFCVisualManager :: GetSmartDockingBaseGuideColors() CMFCVisualManager :: GetToolbarHighlightColor()

Echa un vistazo a la documentación de MSDN para CMFCVisualManager.

Buena sugerencia, pero lamentablemente sólo regresan varios tonos de gris, cuando actualmente estoy corriendo mi solicitud con el estilo CMFCVisualManagerOffice2007 :: Office2007_LunaBlue

Irritantemente la ayuda de MSDN es "en construcción", por lo doesn' ¡Incluso te digo lo que se supone que deben hacer!

0

Buena sugerencia, pero lamentablemente sólo regresan varios tonos de gris, cuando actualmente estoy corriendo mi solicitud con el estilo CMFCVisualManagerOffice2007 :: Office2007_LunaBlue

CMFCVisualManagerOffice2007 :: GetTabFrameColors - el parámetro de salida es clrFace ¿gris?

¿Tal vez son máscaras en la parte superior de un único tono base para cada tema? Asumiendo que puede determinar qué combinación de colores está en efecto con CMFCVisualManagerOffice2007 :: GetStyle(), quizás pueda averiguar cuál es ese matiz y luego enmascare con los métodos GetxxxColor().

1

afxGlobalData contiene información útil sobre los colores, las brochas y las fuentes actuales que está utilizando el paquete de características de MFC. En particular uso afxGlobalData.m_clrBarFace al pintar mis propios fondos de barra de control.

(tenga en cuenta que no estoy frente a mi PC de trabajo por lo que la sintaxis anterior no es perfecta)

Cuestiones relacionadas