2 * Flat Scrollbar control
4 * Copyright 1998, 1999 Eric Kohl
5 * Copyright 1998 Alex Priem
8 * This is just a dummy control. An author is needed! Any volunteers?
9 * I will only improve this control once in a while.
10 * Eric <ekohl@abo.rhein-zeitung.de>
14 * - All notifications.
21 #include "debugtools.h"
23 DEFAULT_DEBUG_CHANNEL(commctrl);
27 DWORD dwDummy; /* just to keep the compiler happy ;-) */
28 } FLATSB_INFO, *LPFLATSB_INFO;
30 #define FlatSB_GetInfoPtr(hwnd) ((FLATSB_INFO*)GetWindowLongA (hwnd, 0))
33 /***********************************************************************
36 * returns nonzero if successful, zero otherwise
39 BOOL WINAPI InitializeFlatSB(HWND hwnd)
41 TRACE("[%04x]\n", hwnd);
46 /***********************************************************************
50 * E_FAIL if one of the scroll bars is currently in use
51 * S_FALSE if InitializeFlatSB was never called on this hwnd
55 HRESULT WINAPI UninitializeFlatSB(HWND hwnd)
57 TRACE("[%04x]\n", hwnd);
62 /***********************************************************************
63 * FlatSB_GetScrollProp
65 * Returns nonzero if successful, or zero otherwise. If index is WSB_PROP_HSTYLE,
66 * the return is nonzero if InitializeFlatSB has been called for this window, or
71 FlatSB_GetScrollProp(HWND hwnd, INT propIndex, LPINT prop)
73 TRACE("[%04x] propIndex=%d\n", hwnd, propIndex);
78 /***********************************************************************
79 * FlatSB_SetScrollProp
82 FlatSB_SetScrollProp(HWND hwnd, UINT index, INT newValue, BOOL flag)
84 TRACE("[%04x] index=%u newValue=%d flag=%d\n", hwnd, index, newValue, flag);
89 /***********************************************************************
90 * From the Microsoft docs:
91 * "If flat scroll bars haven't been initialized for the
92 * window, the flat scroll bar APIs will defer to the corresponding
93 * standard APIs. This allows the developer to turn flat scroll
94 * bars on and off without having to write conditional code."
96 * So, if we just call the standard functions until we implement
97 * the flat scroll bar functions, flat scroll bars will show up and
98 * behave properly, as though they had simply not been setup to
99 * have flat properties.
101 * Susan <sfarley@codeweavers.com>
105 /***********************************************************************
106 * FlatSB_EnableScrollBar
109 FlatSB_EnableScrollBar(HWND hwnd, int nBar, UINT flags)
111 return EnableScrollBar(hwnd, nBar, flags);
114 /***********************************************************************
115 * FlatSB_ShowScrollBar
118 FlatSB_ShowScrollBar(HWND hwnd, int nBar, BOOL fShow)
120 return ShowScrollBar(hwnd, nBar, fShow);
123 /***********************************************************************
124 * FlatSB_GetScrollRange
127 FlatSB_GetScrollRange(HWND hwnd, int nBar, LPINT min, LPINT max)
129 return GetScrollRange(hwnd, nBar, min, max);
132 /***********************************************************************
133 * FlatSB_GetScrollInfo
136 FlatSB_GetScrollInfo(HWND hwnd, int nBar, LPSCROLLINFO info)
138 return GetScrollInfo(hwnd, nBar, info);
141 /***********************************************************************
142 * FlatSB_GetScrollPos
145 FlatSB_GetScrollPos(HWND hwnd, int nBar)
147 return GetScrollPos(hwnd, nBar);
150 /***********************************************************************
151 * FlatSB_SetScrollPos
154 FlatSB_SetScrollPos(HWND hwnd, int nBar, INT pos, BOOL bRedraw)
156 return SetScrollPos(hwnd, nBar, pos, bRedraw);
159 /***********************************************************************
160 * FlatSB_SetScrollInfo
163 FlatSB_SetScrollInfo(HWND hwnd, int nBar, LPSCROLLINFO info, BOOL bRedraw)
165 return SetScrollInfo(hwnd, nBar, info, bRedraw);
168 /***********************************************************************
169 * FlatSB_SetScrollRange
172 FlatSB_SetScrollRange(HWND hwnd, int nBar, INT min, INT max, BOOL bRedraw)
174 return SetScrollRange(hwnd, nBar, min, max, bRedraw);
179 FlatSB_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
181 TRACE("[%04x] wParam=%04x lParam=%08lx\n", hwnd, wParam, lParam);
187 FlatSB_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
189 TRACE("[%04x] wParam=%04x lParam=%08lx\n", hwnd, wParam, lParam);
194 static LRESULT WINAPI
195 FlatSB_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
200 return FlatSB_Create (hwnd, wParam, lParam);
203 return FlatSB_Destroy (hwnd, wParam, lParam);
207 ERR("unknown msg %04x wp=%08x lp=%08lx\n",
208 uMsg, wParam, lParam);
209 return DefWindowProcA (hwnd, uMsg, wParam, lParam);
216 FLATSB_Register (void)
220 ZeroMemory (&wndClass, sizeof(WNDCLASSA));
221 wndClass.style = CS_GLOBALCLASS;
222 wndClass.lpfnWndProc = (WNDPROC)FlatSB_WindowProc;
223 wndClass.cbClsExtra = 0;
224 wndClass.cbWndExtra = sizeof(FLATSB_INFO *);
225 wndClass.hCursor = LoadCursorA (0, IDC_ARROWA);
226 wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
227 wndClass.lpszClassName = FLATSB_CLASSA;
229 RegisterClassA (&wndClass);
234 FLATSB_Unregister (void)
236 UnregisterClassA (FLATSB_CLASSA, (HINSTANCE)NULL);