c windows winapi windows-7 windows-themes

¿Hay una lista de combinaciones de parámetros válidas para GetThemeColor/Visual Styles API



windows winapi (3)

De acuerdo con mi conocimiento de los temas de XP, un archivo .msstyles es solo una colección de definiciones de partes que tienen imágenes y propiedades (colores, tamaños, fuentes, etc.), todas definidas arbitrariamente. La API UxTheme simplemente devuelve lo que está en este archivo, y la presencia de una determinada combinación de propiedades depende básicamente del autor del tema (por eso siempre debe recurrir a GetSysColor , GetSystemMetrics o SystemParametersInfo "clásicos" si falla la API del tema). para devolver lo que sea que estés buscando.

Sin embargo, mencionas un "tema rosa" aquí, así que supongo que estás hablando de un tema de Aero Glass. Los colores del tema Aero son manejados por DWM y aún están separados de los colores de la API clásica o UxTheme. Para recuperar el color de la ventana Aero, debe usar DwmGetColorizationColor , que lo devolverá en formato 0xAARRGGBB (a diferencia de un COLORREF que es 0x00BBGGRR, por lo que deberá traducir entre los dos formatos). Para encontrar primero si la composición DWM (también conocida como "Aero Glass") está habilitada, debe llamar a DwmIsCompositionEnabled .

Estoy tratando de recuperar el color de fondo y el texto de la barra de tareas y / o la ventana principal de mis aplicaciones. Resultó que Windows 7 no devuelve los colores correctos. Si, por ejemplo, cambio a un tema de color rosa, Windows 7 sigue siendo azul claro para el título de la ventana, aunque eso no es cierto. Esto sucede usando

GetSysColor(COLOR_ACTIVECAPTION);

además de usar HTHEME hTheme = OpenThemeData (hwnd, L "WINDOW");

HRESULT result = GetThemeColor( hTheme, WP_CAPTION, CS_ACTIVE, TMT_FILLCOLORHINT, &color);

Además, me encuentro probando varias combinaciones de parámetros para descubrir el color del texto de los subtítulos. Sé páginas de microsofts

Identificadores de propiedad y partes y estados

pero la mayoría de las combinaciones de estos cientos de parámetros no son válidas. ¿Hay alguna lista y / o descripción que combinaciones pueden ser usadas?

Es decir

GetThemeColor( hTheme, WP_CAPTION, // BP_PUSHBUTTON, CS_ACTIVE, TMT_CAPTIONTEXT, &color);

devuelve "Elemento no encontrado".


La forma más sencilla de entender esto es: el color de las barras de título sólidas sigue siendo azul claro.

Sin embargo, cuando se habilita aero, el texto de la barra de título se representa con un fondo totalmente transparente, y por lo tanto es (principalmente) cualquier color con el que el DWM está polarizando el marco.


Las constantes de propiedad (es decir, lo que las funciones de tematización aceptan como parámetro iPartId) simplemente proporcionan un conjunto de lo que las definiciones de tema pueden (no deben) definir para varias clases / partes / combinaciones de estilos.

Es decir, su código debe estar listo para caer a un color determinado de otra manera.

A menudo es útil ver qué temas estándar definen XP (Luna) o Vista / 7 (Aero). Para eso, puede usar algo de eso, p. Ej., ThemeExplorer: http://sourceforge.net/projects/mctrl/files/theme-explorer/