windows-nt/Source/XPSP1/NT/shell/themes/uxtheme/globals.h
2020-09-26 16:20:57 +08:00

87 lines
3.3 KiB
C++

//---------------------------------------------------------------------------//
// globals.h - variables shared by uxtheme modules
//---------------------------------------------------------------------------//
#pragma once
//---------------------------------------------------------------------------
class CThemeServices; // forward
class CAppInfo; // forward
class CRenderList; // forward
class CUxThemeFile; // forward
class CBitmapCache; // forward
//---------------------------------------------------------------------------
#define PROPFLAGS_RESET_TRANSPARENT (1 << 0) // hwnd needs WS_EX_TRANSPARENT reset
#define PROPFLAGS_RESET_COMPOSITED (1 << 1) // hwnd needs WS_EX_COMPOSITED reset
//---------------------------------------------------------------------------
#define WM_THEMECHANGED_TRIGGER WM_UAHINIT // reuse this msgnum with WPARAM != NULL
//---------------------------------------------------------------------------//
extern HINSTANCE g_hInst;
extern WCHAR g_szProcessName[MAX_PATH];
extern DWORD g_dwProcessId;
extern BOOL g_fUxthemeInitialized;
extern BOOL g_fEarlyHookRequest;
extern HWND g_hwndFirstHooked;
extern HWND g_hwndFirstHooked;
extern CBitmapCache *g_pBitmapCacheScaled;
extern CBitmapCache *g_pBitmapCacheUnscaled;
//---------------------------------------------------------------------------
// theme atoms
enum THEMEATOM
{
THEMEATOM_Nil = -1,
THEMEATOM_SUBIDLIST,
THEMEATOM_SUBAPPNAME,
THEMEATOM_HTHEME,
THEMEATOM_PROPFLAGS,
THEMEATOM_UNUSED__________, /// RECYCLE ME!
THEMEATOM_SCROLLBAR,
THEMEATOM_PRINTING,
THEMEATOM_DLGTEXTURING,
// insert new theme atom indices here
THEMEATOM_NONCLIENT,
THEMEATOM_Count
};
// 187504: Since whistler beta1, we use hardcoded atom values to avoid our atoms being
// destroyed as a user logs off.
#define HARDATOM_BASE 0xA910 // arbitrary, but less than 0xC000 (real atom base).
#define HARDATOM_HIGH 0xA94F // range of 64 atoms
inline ATOM GetThemeAtom( THEMEATOM ta )
{
ASSERT(ta > THEMEATOM_Nil && ta < THEMEATOM_Count);
ATOM atom = (ATOM)(HARDATOM_BASE + ta);
ASSERT(atom <= HARDATOM_HIGH);
return atom;
}
//---------------------------------------------------------------------------
enum THEMEHOOKSTATE
{
HS_INITIALIZED,
HS_UNHOOKING,
HS_UNINITIALIZED,
};
extern THEMEHOOKSTATE g_eThemeHookState;
#define HOOKSACTIVE() (HS_INITIALIZED == g_eThemeHookState)
#define UNHOOKING() (HS_UNHOOKING == g_eThemeHookState)
//---------------------------------------------------------------------------
extern CAppInfo *g_pAppInfo;
extern CRenderList *g_pRenderList;
//---------------------------------------------------------------------------
BOOL GlobalsStartup();
BOOL GlobalsShutdown();
HRESULT BumpThemeFileRefCount(CUxThemeFile *pThemeFile);
void CloseThemeFile(CUxThemeFile *pThemeFile);
//---------------------------------------------------------------------------
#define PRINTING_ASKING 1
#define PRINTING_WINDOWDIDNOTHANDLE 2
//---------------------------------------------------------------------------
#define _WindowHasTheme(hwnd) (g_pAppInfo->WindowHasTheme(hwnd))
//---------------------------------------------------------------------------