IsAppThemed()

User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: IsAppThemed()

Post by Antonio Linares »

Juan,

Puedes por favor proporcionar un pequeño ejemplo de código que reproduzca el error ó mostrar una imagen de la pantalla ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
Juan Gálvez
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Post by Juan Gálvez »

Antonio,

No le demos más vueltas ...

Todos los efectos secundarios que estoy sufriendo se deben al cambio en el comportamiento de la función IsAppThemed().

Tal como hemos comentado en el transcurso de la conversación, ahora retorna .T. por el mero hecho de tener fichero manifest enlazado en el ejecutable mientras que antes requería que **además** Windows tuviera temas activos.

Personalmente me parece un poco peligroso hacer este tipo de cambios por las "toneladas" de código que pueden cambiar su comportamiento. Quizás habría sido mejor una nueva función (p.e. IsManifestIncluded()), un argumento ...

¿ Hay alguna forma de conseguir el comportamiento anterior ?

Saludos
Juan
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: IsAppThemed()

Post by Antonio Linares »

Juan,

La razón de haber modificado la función IsAppThemed() es debido a que en Windows 7, aún teniendo los temas desactivados y mostrando la apariencia "clásica antigua" de Windows, IsAppThemed() contenida en uxtheme.dll devuelve verdadero.

En nuestro código anterior una de las comprobaciones que se hacian era:

Code: Select all

      bIsThemed = ( ( ( BOOL ) FindResource( GetResources(), MAKEINTRESOURCE( 1 ),
                          MAKEINTRESOURCE( 24 ) ) ) ||
                          ( ( BOOL ) FindResource( GetInstance(), MAKEINTRESOURCE( 1 ),
                          MAKEINTRESOURCE( 24 ) ) )  || pIsAppThemed() );
 
Pero para poder solucionar el problema anterior que te comento (apariencia clásica en Windows 7) hemos tenido que quitar la llamada a pIsAppThemed():

Code: Select all

      bIsThemed = ( ( ( BOOL ) FindResource( GetResources(), MAKEINTRESOURCE( 1 ),
                          MAKEINTRESOURCE( 24 ) ) ) ||
                          ( ( BOOL ) FindResource( GetInstance(), MAKEINTRESOURCE( 1 ),
                          MAKEINTRESOURCE( 24 ) ) ) );
 
Nosotros no hemos advertido ningún inconveniente con este cambio. Pero tu, como dices, si.

Por eso, si eres tan amable de proporcionar un ejemplo ó un pantallazo veremos la forma de solucionarlo. Si no colaboras en tan poco que te pedimos, realmente es dificil poder ayudarte :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Juan Gálvez
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Post by Juan Gálvez »

Antonio,
La razón de haber modificado la función IsAppThemed() es debido a que en Windows 7, aún teniendo los temas desactivados y mostrando la apariencia "clásica antigua" de Windows, IsAppThemed() contenida en uxtheme.dll devuelve verdadero.
Pero éso NO era así en anteriores versiones. Yo estoy probando FWH 9.01 sobre Win7 con los temas desactivados y funciona perfectamente (retorna .F.).
Nosotros no hemos advertido ningún inconveniente con este cambio. Pero tu, como dices, si.

Por eso, si eres tan amable de proporcionar un ejemplo ó un pantallazo veremos la forma de solucionarlo. Si no colaboras en tan poco que te pedimos, realmente es dificil poder ayudarte
Sí existen inconvenientes, prueba samples\TestMDI.prg con temas desactivados y verás como p.e. NO aparecen los grippers de la TBar y la TMsgBar.

En mi caso, los inconvenientes son mayores porque tenemos código de FWH modificado y algunas de esas modificaciones se apoyan en IsAppThemed().

Saludos
Juan
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: IsAppThemed()

Post by Antonio Linares »

Juan,

Tienes razón. IsAppThemed() de uxtheme.dll funciona bien:

Code: Select all

#include "FiveWin.ch"

function Main()

   MsgInfo( IsAppThemed() )

return nil

DLL static FUNCTION IsAppThemed() AS BOOL LIB "uxtheme.dll"
 
Vamos a buscar en estos foros la pregunta de soporte técnico que dió lugar a ese cambio para ver que pudo pasar. Gracias! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: IsAppThemed()

Post by Antonio Linares »

De paso comentar la existencia de la función IsThemeActive() que parece no funcionar bien en uxtheme.dll:

Code: Select all

#include "FiveWin.ch"

function Main()

   MsgInfo( IsAppThemed() )
   
   MsgInfo( IsThemeActive() )

return nil

DLL static FUNCTION IsAppThemed() AS BOOL LIB "uxtheme.dll"

DLL static FUNCTION IsThemeActive() AS BOOL LIB "uxtheme.dll"
 
IsThemeActive() devuelve verdadero aunque no hemos definido un fichero manifest para la aplicación:

http://msdn.microsoft.com/en-us/library ... S.85).aspx
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply