IsAppThemed()

Re: IsAppThemed()

Postby Antonio Linares » Thu Aug 26, 2010 5:32 pm

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
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: IsAppThemed()

Postby Juan Gálvez » Fri Aug 27, 2010 8:30 am

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
Juan Gálvez
 
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Postby Antonio Linares » Fri Aug 27, 2010 9:18 am

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  Expand view  RUN

      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  Expand view  RUN

      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
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: IsAppThemed()

Postby Juan Gálvez » Fri Aug 27, 2010 9:43 am

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
Juan Gálvez
 
Posts: 14
Joined: Fri Oct 21, 2005 10:05 am

Re: IsAppThemed()

Postby Antonio Linares » Fri Aug 27, 2010 10:25 am

Juan,

Tienes razón. IsAppThemed() de uxtheme.dll funciona bien:
Code: Select all  Expand view  RUN
#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: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: IsAppThemed()

Postby Antonio Linares » Fri Aug 27, 2010 10:38 am

De paso comentar la existencia de la función IsThemeActive() que parece no funcionar bien en uxtheme.dll:
Code: Select all  Expand view  RUN
#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/bb759813(VS.85).aspx
regards, saludos

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

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 38 guests