Hola Antonio,
Estoy probando FWH 10.08 y observo que IsAppThemed() sigue devolviendo .T. aún sin temas activos.
¿ Recuerdas nuestra última conversación ?
¿ Cómo quedará finalmente ?
Gracias y saludos
Juan
BOOL _IsAppThemed( void )
{
static BOOL bInit = FALSE;
static BOOL bIsThemed = FALSE;
InitThemes();
if( pIsAppThemed && ! bInit )
{
WIN32_FIND_DATA fd;
bInit = TRUE;
bIsThemed = ( ( ( BOOL ) FindResource( GetResources(), MAKEINTRESOURCE( 1 ),
MAKEINTRESOURCE( 24 ) ) ) ||
( ( BOOL ) FindResource( GetInstance(), MAKEINTRESOURCE( 1 ),
MAKEINTRESOURCE( 24 ) ) ) || pIsAppThemed() );
if( ! bIsThemed )
{
char AppName[ 256 ];
HANDLE hFind;
GetModuleFileName( NULL, AppName, 255 );
lstrcat( AppName, ".Manifest" );
if( ( hFind = FindFirstFile( AppName, &fd ) ) != INVALID_HANDLE_VALUE )
{
bIsThemed = TRUE;
FindClose( hFind );
}
}
}
if( pIsAppThemed != NULL )
return bIsThemed;
else
return FALSE;
}
typedef BOOL ( __stdcall * PFNISAPPTHEMED ) ( void );
static PFNISAPPTHEMED pIsAppThemed = NULL;
static HMODULE hDLL = NULL;
static void InitThemes( void )
{
static BOOL bInit = FALSE;
if( bInit )
return;
else
bInit = TRUE;
if( hDLL == NULL )
{
if( hDLL = LoadLibrary( "UXTHEME.DLL" ) )
{
pIsAppThemed = ( PFNISAPPTHEMED ) GetProcAddress( hDLL, "IsAppThemed" );
}
}
}
BOOL _IsAppThemed( void )
{
static BOOL bInit = FALSE;
static BOOL bIsThemed = FALSE;
InitThemes();
if( pIsAppThemed && ! bInit )
{
WIN32_FIND_DATA fd;
bInit = TRUE;
bIsThemed = ( ( ( BOOL ) FindResource( GetResources(), MAKEINTRESOURCE( 1 ), MAKEINTRESOURCE( 24 ) ) ) ||
( ( BOOL ) FindResource( GetInstance(), MAKEINTRESOURCE( 1 ), MAKEINTRESOURCE( 24 ) ) ) || pIsAppThemed() ) /*ACA pIsAppThemed es funcion o var, creo que deberia ser una var*/
....
function IsAppThemed()
return( .f. )
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="MyOrganization.MyDivision.MyApp"
version="1.0.0.0"
processorArchitecture="X86"
/>
<description>Verbal description of MyApp.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
#include "fivewin.ch"
procedure main()
?"Hola Mundo"
?"IsAppThemed:",IsAppThemed() //original de fwh
?"IsActive:",IsThemeActive() //original de fwh
?"IsAppThemed:",IsAppThemed2() //las aca incluidas
?"IsActive:",IsThemeActive2() //las aca incluidas
CloseTheme()
return
#pragma BEGINDUMP
/*----------------------------------------------------------------------------*/
#include "hbapi.h"
#include "windows.h"
#include "uxtheme.h"
/*----------------------------------------------------------------------------*/
typedef BOOL ( __stdcall * PFNISAPPTHEMED ) ( void );
typedef BOOL ( __stdcall * PFNISTHEMEACTIVE ) ( void );
static HMODULE hDLL = NULL;
static PFNISAPPTHEMED pIsAppThemed = NULL;
static void InitThemes( void );
BOOL _IsAppThemed( void );
BOOL _IsThemeActive( void );
BOOL _CloseTheme(void);
/*----------------------------------------------------------------------------*/
HB_FUNC( ISAPPTHEMED2 )
{
hb_retl( _IsAppThemed() );
}
HB_FUNC( ISTHEMEACTIVE2 )
{
hb_retl( _IsThemeActive() );
}
HB_FUNC( CLOSETHEME )
{
hb_retl( _CloseTheme() );
}
/*----------------------------------------------------------------------------*/
static void InitThemes( void )
{
/*inicializa variable estatica*/
static BOOL bInit = FALSE;
/*valida con variable estatica que la funcion se ejecute solo una vez*/
if( bInit )
{
return;
}
else
{
bInit = TRUE;
}
if( hDLL == NULL )
{
/*carga dll que manipula los temas*/
if( hDLL = LoadLibrary( "UXTHEME.DLL" ) )
{
/*obtiene puntero a funcion IsAppThemed contenida en la dll cargada previamente*/
pIsAppThemed = ( PFNISAPPTHEMED ) GetProcAddress( hDLL, "IsAppThemed" );
}
}
}
/*----------------------------------------------------------------------------*/
BOOL _IsAppThemed( void )
{
/*inicializa variables estaticas*/
static BOOL bInit = FALSE;
static BOOL bIsThemed = FALSE;
/*obtiene puntero de la funcion IsAppThemed*/
InitThemes();
if( pIsAppThemed && ! bInit )
{
WIN32_FIND_DATA fd;
bInit = TRUE;
bIsThemed = ( ( ( BOOL ) FindResource( GetResources(), MAKEINTRESOURCE( 1 ), MAKEINTRESOURCE( 24 ) ) ) ||
( ( BOOL ) FindResource( GetInstance(), MAKEINTRESOURCE( 1 ), MAKEINTRESOURCE( 24 ) ) ) || pIsAppThemed() );
if( ! bIsThemed )
{
char AppName[ 256 ];
HANDLE hFind;
GetModuleFileName( NULL, AppName, 255 );
lstrcat( AppName, ".Manifest" );
if( ( hFind = FindFirstFile( AppName, &fd ) ) != INVALID_HANDLE_VALUE )
{
bIsThemed = TRUE;
FindClose( hFind );
}
}
}
if( pIsAppThemed != NULL )
{
return bIsThemed;
}
else
{
return FALSE;
}
}
/*----------------------------------------------------------------------------*/
BOOL _IsThemeActive( void )
{
PFNISTHEMEACTIVE pIsThemeActive = NULL;
if( hDLL != 0 )
{
/*puntero a funcion IsThemeActive*/
pIsThemeActive = ( PFNISTHEMEACTIVE ) GetProcAddress( hDLL, "IsThemeActive" );
/*ejecuta funcion*/
if( pIsThemeActive() )
{
return TRUE;
}
}
return FALSE;
}
/*----------------------------------------------------------------------------*/
BOOL _CloseTheme( void )
{
BOOL bClose = FALSE;
if( hDLL != 0 )
{
bClose = FreeLibrary( hDLL );
}
return bClose;
}
#pragma ENDDUMP
/* codigo tomado de internet como ejemplo.
bool bReturn = false;
HMODULE hDll = ::LoadLibrary(_T("UxTheme.dll"));
if( hDll )
{
typedef BOOL(*THEMEACTIVE)(VOID);
THEMEACTIVE pIsThemeActive = (THEMEACTIVE)GetProcAddress(hDll, "IsThemeActive");
if( pIsThemeActive )
bReturn = pIsThemeActive();
::FreeLibrary( hDll );
}
return bReturn;
*/
// Generated by ResEdit 1.5.4
// Copyright (C) 2006-2010
// http://www.resedit.net
#include <windows.h>
#include <commctrl.h>
#include <richedit.h>
#include "resource.h"
//
// Manifest resources
//
1 RT_MANIFEST ".\\manifest.xml"
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 6 guests