#pragma once #include #include #include #ifndef WM_DPICHANGED #define WM_DPICHANGED 0x02E0 #endif extern "C" IMAGE_DOS_HEADER __ImageBase; #define ALF_HINSTANCE ((HINSTANCE)&__ImageBase) typedef LRESULT (CALLBACK *ALF_COMPAT_SUBCLASSPROC)(HWND,UINT,WPARAM,LPARAM,UINT_PTR,DWORD_PTR); typedef struct { UINT cbSize; int iBorderWidth; int iScrollWidth; int iScrollHeight; int iCaptionWidth; int iCaptionHeight; LOGFONT lfCaptionFont; int iSmCaptionWidth; int iSmCaptionHeight; LOGFONT lfSmCaptionFont; int iMenuWidth; int iMenuHeight; LOGFONT lfMenuFont; LOGFONT lfStatusFont; LOGFONT lfMessageFont; int iPaddedBorderWidth; // new in Vista } ALF_NONCLIENTMETRICS_VISTA; static inline SIZE_T ALF_SizeOf_NONCLIENTMETRICS(void) { if (LOBYTE(LOWORD(GetVersion())) >= 6) { return sizeof(ALF_NONCLIENTMETRICS_VISTA); } else { return sizeof(ALF_NONCLIENTMETRICS_VISTA) - sizeof(int); } } long ALF_GetAveCharWidth(HDC hdc); void ALF_UniqueCounterValue(LONG_PTR *pCounterId, LONG_PTR *pCounterValue); typedef void *ALF_Compat_HANIMATIONBUFFER; typedef enum { ALF_Compat_BPAS_NONE, ALF_Compat_BPAS_LINEAR, ALF_Compat_BPAS_CUBIC, ALF_Compat_BPAS_SINE } ALF_Compat_BP_ANIMATIONSTYLE; typedef struct { DWORD cbSize; DWORD dwFlags; ALF_Compat_BP_ANIMATIONSTYLE style; DWORD dwDuration; } ALF_Compat_BP_ANIMATIONPARAMS; typedef struct { DWORD cbSize; DWORD dwFlags; const RECT *prcExclude; const BLENDFUNCTION *pBlendFunction; } ALF_Compat_BP_PAINTPARAMS; #ifndef TMT_TRANSITIONDURATION #define TMT_TRANSITIONDURATION 6000 #endif extern BOOL (WINAPI *ALF_Compat_IsAppThemed)(void); extern UINT (WINAPI *ALF_Compat_GetDpiForWindow)(HWND); extern BOOL (WINAPI *ALF_Compat_AdjustWindowRectExForDpi)(LPRECT,DWORD,BOOL,DWORD,UINT); extern int (WINAPI *ALF_Compat_GetSystemMetricsForDpi)(int, UINT); extern BOOL (WINAPI *ALF_Compat_SetWindowSubclass)(HWND, ALF_COMPAT_SUBCLASSPROC, UINT_PTR, DWORD_PTR); extern LRESULT (WINAPI *ALF_Compat_DefSubclassProc)(HWND, UINT, WPARAM, LPARAM); extern BOOL (WINAPI *ALF_Compat_RemoveWindowSubclass)(HWND, ALF_COMPAT_SUBCLASSPROC, UINT_PTR); extern BOOL (WINAPI *ALF_Compat_SystemParametersInfoForDpi)(UINT,UINT,PVOID,UINT,UINT); extern HTHEME (WINAPI *ALF_Compat_OpenThemeData)(HWND, LPCWSTR); extern HRESULT (WINAPI *ALF_Compat_CloseThemeData)(HTHEME); extern BOOL (WINAPI *ALF_Compat_IsThemeBackgroundPartiallyTransparent)(HTHEME,int,int); extern HRESULT (WINAPI *ALF_Compat_DrawThemeParentBackground)(HWND,HDC,RECT *); extern HRESULT (WINAPI *ALF_Compat_DrawThemeBackground)(HTHEME, HDC, int, int, const RECT *, const RECT *); extern HRESULT (WINAPI *ALF_Compat_GetThemeBackgroundContentRect)(HTHEME,HDC,int,int,const RECT *,RECT *); extern HRESULT (WINAPI *ALF_Compat_GetThemeTextExtent)(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,const RECT *, RECT *); extern HRESULT (WINAPI *ALF_Compat_DrawThemeText)(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,DWORD,const RECT *); extern BOOL (WINAPI *ALF_Compat_TrackMouseEvent)(LPTRACKMOUSEEVENT tme); extern HRESULT (WINAPI *ALF_Compat_BufferedPaintInit)(void); extern HRESULT (WINAPI *ALF_Compat_BufferedPaintUnInit)(void); extern ALF_Compat_HANIMATIONBUFFER (WINAPI *ALF_Compat_BeginBufferedAnimation)(HWND,HDC,const RECT *,DWORD,ALF_Compat_BP_PAINTPARAMS *,ALF_Compat_BP_ANIMATIONPARAMS *,HDC *,HDC *); extern HRESULT (WINAPI *ALF_Compat_EndBufferedAnimation)(ALF_Compat_HANIMATIONBUFFER,BOOL); extern BOOL (WINAPI *ALF_Compat_BufferedPaintRenderAnimation)(HWND,HDC); extern HRESULT (WINAPI *ALF_Compat_GetThemeTransitionDuration)(HTHEME,int,int,int,int,DWORD*);