X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3255bce3209598cda0e2eae91132aa0b90da950b..8397cab4dafee82a887785a80ab8f588a68d9f27:/include/wx/msw/uxtheme.h diff --git a/include/wx/msw/uxtheme.h b/include/wx/msw/uxtheme.h index da91ed7d0e..13c77b2288 100644 --- a/include/wx/msw/uxtheme.h +++ b/include/wx/msw/uxtheme.h @@ -1,18 +1,18 @@ /////////////////////////////////////////////////////////////////////////////// // Name: include/wx/msw/uxtheme.h // Purpose: wxUxThemeEngine class: support for XP themes -// Author: +// Author: // Modified by: // Created: 2003 // RCS-ID: $Id$ -// Copyright: (c) 2003 wxWindows Dev-Team -// License: wxWindows license +// Copyright: (c) 2003 wxWidgets Dev-Team +// License: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _WX_UXTHEME_H_ #define _WX_UXTHEME_H_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "uxtheme.h" #endif @@ -58,17 +58,17 @@ typedef struct _WXUOSVERSIONINFOEXA { typedef void* WXHTHEME; typedef long WXUHRESULT; -typedef WXHTHEME (__stdcall *PFNWXUOPENTHEMEDATA)(WXHWND, const wchar_t *); +typedef WXHTHEME (__stdcall *PFNWXUOPENTHEMEDATA)(WXHWND, const wchar_t *); typedef WXUHRESULT (__stdcall *PFNWXUCLOSETHEMEDATA)(WXHTHEME); -typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMEBACKGROUND)(WXHTHEME, WXHDC, +typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMEBACKGROUND)(WXHTHEME, WXHDC, int, int, const RECT *, const RECT *); #define WXU_DTT_GRAYED 0x1 -typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMETEXT)(WXHTHEME, WXHDC, int, - int, const wchar_t *, int, DWORD, +typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMETEXT)(WXHTHEME, WXHDC, int, + int, const wchar_t *, int, DWORD, DWORD, const RECT *); -typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEBACKGROUNDCONTENTRECT)(WXHTHEME, WXHDC, +typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEBACKGROUNDCONTENTRECT)(WXHTHEME, WXHDC, int, int, const RECT *, RECT *); -typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEBACKGROUNDEXTENT)(WXHTHEME, WXHDC, int, int, +typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEBACKGROUNDEXTENT)(WXHTHEME, WXHDC, int, int, const RECT *, RECT *); enum WXUTHEMESIZE @@ -108,9 +108,9 @@ typedef struct tagWXUTEXTMETRIC unsigned char tmCharSet; } WXUTEXTMETRIC; -typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEPARTSIZE)(WXHTHEME, WXHDC, int, int, const RECT *, +typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEPARTSIZE)(WXHTHEME, WXHDC, int, int, const RECT *, enum WXUTHEMESIZE, WXUSIZE *); -typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMETEXTEXTENT)(WXHTHEME, WXHDC, int, int, const wchar_t *, +typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMETEXTEXTENT)(WXHTHEME, WXHDC, int, int, const wchar_t *, int, WXDWORD, const RECT *, RECT *); typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMETEXTMETRICS)(WXHTHEME, WXHDC, int, int, WXUTEXTMETRIC*); @@ -188,7 +188,7 @@ typedef struct _WXUINTLIST int iValues[WXU_MAX_INTLIST_COUNT]; } WXUINTLIST, *PWXUINTLIST; typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEINTLIST)(WXHTHEME, int, - int, int, WXUINTLIST*); + int, int, WXUINTLIST*); enum WXUPROPERTYORIGIN { @@ -228,7 +228,7 @@ typedef BOOL (__stdcall *PFNWXUISTHEMEDIALOGTEXTUREENABLED)(WXHWND); typedef WXDWORD (__stdcall *PFNWXUGETTHEMEAPPPROPERTIES)(); typedef void (__stdcall *PFNWXUSETTHEMEAPPPROPERTIES)(WXDWORD); -typedef WXUHRESULT (__stdcall *PFNWXUGETCURRENTTHEMENAME)(wchar_t *, int, +typedef WXUHRESULT (__stdcall *PFNWXUGETCURRENTTHEMENAME)(wchar_t *, int, wchar_t *, int, wchar_t *, int); #define WXU_SZ_THDOCPROP_DISPLAYNAME L"DisplayName" @@ -261,6 +261,10 @@ public: // get the theme engine or NULL if themes are not available static wxUxThemeEngine *Get(); + // get the theme enging or NULL if themes are not available or not used for + // this application + static wxUxThemeEngine *GetIfActive(); + // all uxtheme.dll functions wxUX_THEME_DECLARE(PFNWXUOPENTHEMEDATA, OpenThemeData) wxUX_THEME_DECLARE(PFNWXUCLOSETHEMEDATA, CloseThemeData) @@ -310,10 +314,6 @@ public: wxUX_THEME_DECLARE(PFNWXUDRAWTHEMEPARENTBACKGROUND, DrawThemeParentBackground) wxUX_THEME_DECLARE(PFNWXUENABLETHEMING, EnableTheming) - // This calls IsAppThemed but also checks the commctrl.dll version - // for a more reliable answer. - bool IsAppThemedEx() ; - private: // construcor is private as only Get() can create us and is also trivial as // everything really happens in Initialize() @@ -333,7 +333,7 @@ private: // uxtheme.dll wxDynamicLibrary m_dllUxTheme; - + // the one and only theme engine, initially NULL static wxUxThemeEngine *ms_themeEngine; @@ -344,17 +344,32 @@ private: friend class wxUxThemeModule; #endif // wxUSE_UXTHEME - DECLARE_NO_COPY_CLASS(wxUxThemeEngine); + DECLARE_NO_COPY_CLASS(wxUxThemeEngine) }; -#if !wxUSE_UXTHEME +#if wxUSE_UXTHEME + +/* static */ inline wxUxThemeEngine *wxUxThemeEngine::GetIfActive() +{ + wxUxThemeEngine *engine = Get(); + return engine && engine->IsAppThemed() && engine->IsThemeActive() + ? engine + : NULL; +} + +#else // !wxUSE_UXTHEME /* static */ inline wxUxThemeEngine *wxUxThemeEngine::Get() { return NULL; } -#endif // !wxUSE_UXTHEME +/* static */ inline wxUxThemeEngine *wxUxThemeEngine::GetIfActive() +{ + return NULL; +} + +#endif // wxUSE_UXTHEME/!wxUSE_UXTHEME // ---------------------------------------------------------------------------- // wxUxThemeHandle: encapsulates ::Open/CloseThemeData() @@ -367,7 +382,7 @@ public: { wxUxThemeEngine *engine = wxUxThemeEngine::Get(); - m_hTheme = + m_hTheme = engine ? (WXHTHEME)engine->OpenThemeData(win->GetHWND(), classes) : NULL; }