diff --git a/Contrib/Makensisw/makensisw.cpp b/Contrib/Makensisw/makensisw.cpp index 8ddfc384..cac92c14 100644 --- a/Contrib/Makensisw/makensisw.cpp +++ b/Contrib/Makensisw/makensisw.cpp @@ -242,7 +242,7 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam PAINTSTRUCT ps; GetGripperPos(hwndDlg, g_resize.griprect); HDC hdc = BeginPaint(hwndDlg, &ps); - DrawFrameControl(hdc, &g_resize.griprect, DFC_SCROLL, DFCS_SCROLLSIZEGRIP); + DrawGripper(hwndDlg, hdc, g_resize.griprect); EndPaint(hwndDlg, &ps); return TRUE; } diff --git a/Contrib/Makensisw/toolbar.cpp b/Contrib/Makensisw/toolbar.cpp index d7e65050..d28b9e77 100644 --- a/Contrib/Makensisw/toolbar.cpp +++ b/Contrib/Makensisw/toolbar.cpp @@ -97,7 +97,7 @@ void CreateToolBar() if (hasCC4_71) { // Version 4.71 SendMessage(g_toolbar.hwnd, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DRAWDDARROWS); } - + } else { // Old Windows 95 toolbar, 256 color bitmap with system palette diff --git a/Contrib/Makensisw/utils.cpp b/Contrib/Makensisw/utils.cpp index d25045d9..52cc03c7 100644 --- a/Contrib/Makensisw/utils.cpp +++ b/Contrib/Makensisw/utils.cpp @@ -986,3 +986,42 @@ HFONT CreateFont(int Height, int Weight, DWORD PitchAndFamily, LPCTSTR Face) OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, PitchAndFamily, Face); } + +#ifndef SP_GRIPPER +#ifndef HTHEME +#define HTHEME HTHEME_OLDSDK +struct OLDSDK_TYPE_HTHEME {int unused;}; typedef struct OLDSDK_TYPE_HTHEME* HTHEME; +#endif +#define SP_GRIPPER 3 +#endif +struct VisualStyles { + VisualStyles() : m_OpenThemeData(NULL) {} + static HTHEME WINAPI Compat_OpenThemeData(HWND hWnd, LPCWSTR Class) { return NULL; } + HTHEME OpenThemeData(HWND hWnd, LPCWSTR Class) { return (InitUXTheme(), m_OpenThemeData(hWnd, Class)); } + void InitUXTheme() + { + if (m_OpenThemeData) return ; + HMODULE hUXT = LoadLibraryA("UXTHEME"); + if (!((FARPROC&) m_OpenThemeData = GetProcAddress(hUXT, "OpenThemeData"))) m_OpenThemeData = Compat_OpenThemeData; + (FARPROC&) CloseThemeData = GetProcAddress(hUXT, "CloseThemeData"); + (FARPROC&) DrawThemeBackground = GetProcAddress(hUXT, "DrawThemeBackground"); + } + + HTHEME(WINAPI*m_OpenThemeData)(HWND,LPCWSTR); + HRESULT(WINAPI*CloseThemeData)(HTHEME); + HRESULT(WINAPI*DrawThemeBackground)(HTHEME,HDC,int,int,LPCRECT,LPCRECT); +} VS; + +void DrawGripper(HWND hWnd, HDC hDC, const RECT&r) +{ + HTHEME hTheme = VS.OpenThemeData(hWnd, L"STATUS"); + if (hTheme) + { + VS.DrawThemeBackground(hTheme, hDC, SP_GRIPPER, 0, &r, NULL); + VS.CloseThemeData(hTheme); + } + else + { + DrawFrameControl(hDC, const_cast(&r), DFC_SCROLL, DFCS_SCROLLSIZEGRIP); + } +} diff --git a/Contrib/Makensisw/utils.h b/Contrib/Makensisw/utils.h index bfce44c3..23308768 100644 --- a/Contrib/Makensisw/utils.h +++ b/Contrib/Makensisw/utils.h @@ -84,10 +84,12 @@ bool OpenUrlInDefaultBrowser(HWND hwnd, LPCSTR Url); HMENU FindSubMenu(HMENU hMenu, UINT uId); HFONT CreateFont(int Height, int Weight, DWORD PitchAndFamily, LPCTSTR Face); -inline void GetGripperPos(HWND hwnd, RECT&r) +void DrawGripper(HWND hWnd, HDC hDC, const RECT&r); +static inline void GetGripperPos(HWND hwnd, RECT&r) { GetClientRect(hwnd, &r); r.left = r.right - GetSystemMetrics(SM_CXVSCROLL); r.top = r.bottom - GetSystemMetrics(SM_CYVSCROLL); } + #endif