13#define SCROLL_NOWHERE 0x00
14#define SCROLL_TOP_ARROW 0x01
15#define SCROLL_TOP_RECT 0x02
16#define SCROLL_THUMB 0x03
17#define SCROLL_BOTTOM_RECT 0x04
18#define SCROLL_BOTTOM_ARROW 0x05
20#define SCROLL_FIRST_DELAY 200
21#define SCROLL_REPEAT_DELAY 50
26#define SCROLL_MIN_RECT 4
29#define SCROLL_MIN_THUMB 6
32#define SCROLL_ARROW_THUMB_OVERLAP 0
34#define MINTRACKTHUMB 8
37#define SA_SSI_HIDE 0x0001
38#define SA_SSI_SHOW 0x0002
39#define SA_SSI_REFRESH 0x0004
40#define SA_SSI_REPAINT_ARROWS 0x0008
42#define SBRG_SCROLLBAR 0
43#define SBRG_TOPRIGHTBTN 1
44#define SBRG_PAGEUPRIGHT 2
45#define SBRG_SCROLLBOX 3
46#define SBRG_PAGEDOWNLEFT 4
47#define SBRG_BOTTOMLEFTBTN 5
49#define CHANGERGSTATE(item, status) \
50 if(Info->rgstate[(item)] != (status)) \
52 Info->rgstate[(item)] = (status);
86 return &pSBInfo->
Horz;
88 return &pSBInfo->
Vert;
92 ERR(
"IntGetSBData Wrong Extra bytes for CTL Scrollbar\n");
98 ERR(
"IntGetSBData Bad Bar\n");
168 INT Thumb, ThumbBox, ThumbPos, cxy, mx;
186 cxy = ClientRect.
bottom - ClientRect.
top;
191 cxy = ClientRect.
right - ClientRect.
left;
200 if(cxy <= (2 * Thumb))
230 ThumbPos = Thumb + ThumbBox;
271 lpsi->
fMask &= ~SIF_THEMED;
275 ERR(
"Trying to get scrollinfo for unknown scrollbar type %d\n", nBar);
281 ERR(
"IntGetScrollInfo No window scrollbar info\n");
320 lpsi->
fMask &= ~SIF_THEMED;
324 ERR(
"Trying to get scrollinfo for unknown scrollbar type %d\n", nBar);
346 if (pSBTrack && pSBTrack->
nBar == nBar && pSBTrack->
spwndTrack == pWnd)
370 LPSCROLLBAR_INFO infoPtr;
382 default:
return FALSE;
389 SCROLL_GetScrollBarRect(
hwnd, nBar, &
info->rcScrollBar, &nDummy,
390 &
info->dxyLineButton, &
info->xyThumbTop);
395 info->xyThumbBottom =
info->xyThumbTop +
info->dxyLineButton;
397 infoPtr = SCROLL_GetInternalInfo(
hwnd, nBar,
TRUE);
402 info->rgstate[0] = 0;
406 if (infoPtr->minVal >= infoPtr->maxVal -
max(infoPtr->page - 1, 0))
419 info->rgstate[1] = 0;
426 info->rgstate[2] = 0;
427 if (infoPtr->curVal == infoPtr->minVal)
433 info->rgstate[3] = 0;
438 info->rgstate[4] = 0;
439 if (infoPtr->curVal >= infoPtr->maxVal - 1)
445 info->rgstate[5] = 0;
476 ERR(
"Trying to set scrollinfo for unknown scrollbar type %d\n", nBar);
514 bChangeParams =
TRUE;
538 bChangeParams =
TRUE;
546 bChangeParams =
TRUE;
552 if (
Info->nPage > MaxPage)
553 pSBData->
page =
Info->nPage = MaxPage;
560 else if (
Info->nPos > MaxPos)
561 pSBData->
pos =
Info->nPos = MaxPos;
570 new_flags =
Window->pSBInfo->WSBflags;
577 bChangeParams =
TRUE;
579 else if ((nBar !=
SB_CTL) && bChangeParams)
586 if ((nBar !=
SB_CTL) && bChangeParams)
597 if (
Window->pSBInfo->WSBflags != new_flags)
599 Window->pSBInfo->WSBflags = new_flags;
630 if (bRedraw && bVisible)
657 if (bChangeParams || (OldPos != pSBData->
pos))
683 ERR(
"Trying to get scrollinfo for unknown scrollbar type %d\n",
Bar);
689 ERR(
"Failed to create scrollbars for window\n");
737 ERR(
"Trying to get scrollinfo for unknown scrollbar type %d\n",
Bar);
743 ERR(
"Failed to create scrollbars for window\n");
787 Window->pSBInfo->Vert.posMax = 100;
788 Window->pSBInfo->Horz.posMax = 100;
865 ULONG old_style, set_bits = 0, clear_bits = 0;
892 old_style =
IntSetStyle(Wnd, set_bits, clear_bits);
893 if ((old_style & clear_bits) != 0 || (old_style & set_bits) != set_bits)
913 HBRUSH hSaveBrush, hBrush;
919 BottomSelected =
TRUE;
974 Rect.top += ThumbTop;
994 Rect.left += ThumbTop;
1022 RECT RectLT, RectRB;
1023 INT ScrollDirFlagLT, ScrollDirFlagRB;
1117 if (
Info.dxyLineButton)
1139 if (!pWnd)
return 0;
1161 TRACE(
"Enter NtUserGetScrollBarInfo\n");
1186 TRACE(
"Leave NtUserGetScrollBarInfo, ret=%i\n", Ret);
1205 TRACE(
"Enter NtUserGetScrollInfo\n");
1216 ERR(
"NtUserGetScrollInfo Failed size\n");
1224 ERR(
"NtUserGetScrollInfo Bad window\n");
1238 ERR(
"NtUserGetScrollInfo Failed copy to user\n");
1246 TRACE(
"Leave NtUserGetScrollInfo, ret=%i\n", Ret);
1265 TRACE(
"Enter NtUserEnableScrollBar\n");
1276 OrigArrows =
Window->pSBInfo->WSBflags;
1277 Window->pSBInfo->WSBflags = wArrows;
1291 ERR(
"Trying to set scrollinfo for unknown scrollbar type %u\n", wSBflags);
1316 ERR(
"FIXME: EnableScrollBar wSBflags %u wArrows %u Chg %d\n", wSBflags, wArrows, Chg);
1323 if (OrigArrows == wArrows)
1335 TRACE(
"Leave NtUserEnableScrollBar, ret=%i\n", Ret);
1354 TRACE(
"Enter NtUserSetScrollInfo\n");
1375 TRACE(
"Leave NtUserSetScrollInfo, ret=%lu\n", Ret);
1387 TRACE(
"Enter NtUserShowScrollBar\n");
1395 (nBar ==
SB_HORZ) ? 0 : bShow);
1399 TRACE(
"Leave NtUserShowScrollBar, ret=%lu\n",
ret);
1422 TRACE(
"Enter NtUserSetScrollBarInfo\n");
1434 ERR(
"Trying to set scrollinfo for unknown scrollbar type %d\n",
Obj);
1461 TRACE(
"Leave NtUserSetScrollBarInfo, ret=%i\n", Ret);
#define DBG_DEFAULT_CHANNEL(ch)
#define NT_SUCCESS(StatCode)
#define ERROR_INVALID_PARAMETER
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
static const WCHAR Cleanup[]
#define ExAllocatePoolWithTag(hernya, size, tag)
GLint GLint GLsizei width
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define UserHMGetHandle(obj)
struct _SBINFOEX SBINFOEX
#define EXCEPTION_EXECUTE_HANDLER
HGDIOBJ FASTCALL IntGetSysColorBrush(INT Object)
#define MmCopyToCaller(x, y, z)
#define ExFreePoolWithTag(_P, _T)
__kernel_entry W32KAPI HBRUSH APIENTRY NtGdiSelectBrush(_In_ HDC hdc, _In_ HBRUSH hbrush)
__kernel_entry W32KAPI BOOL APIENTRY NtGdiPatBlt(_In_ HDC hdcDest, _In_ INT x, _In_ INT y, _In_ INT cx, _In_ INT cy, _In_ DWORD dwRop)
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
HBRUSH FASTCALL DefWndControlColor(HDC hDC, UINT ctlType)
BOOLEAN FASTCALL co_WinPosSetWindowPos(PWND Window, HWND WndInsertAfter, INT x, INT y, INT cx, INT cy, UINT flags)
LRESULT FASTCALL co_WinPosGetNonClientSize(PWND Window, RECT *WindowRect, RECT *ClientRect)
BOOLEAN FASTCALL co_WinPosShowWindow(PWND Wnd, INT Cmd)
VOID FASTCALL UserLeave(VOID)
VOID FASTCALL UserEnterShared(VOID)
VOID FASTCALL UserEnterExclusive(VOID)
static __inline VOID UserDerefObjectCo(PVOID obj)
static __inline VOID UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
struct _USER_MESSAGE_QUEUE * MessageQueue
static int UpdateRect(TreeListData *pData, unsigned uItem, unsigned uSub)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
BOOL FASTCALL co_UserRedrawWindow(PWND Window, const RECTL *UpdateRect, PREGION UpdateRgn, ULONG Flags)
PWND FASTCALL UserGetWindowObject(HWND hWnd)
#define ASSERT_REFS_CO(_obj_)
INT FASTCALL UserReleaseDC(PWND Window, HDC hDc, BOOL EndPaint)
HDC FASTCALL UserGetDCEx(PWND Window OPTIONAL, HANDLE ClipRegion, ULONG Flags)
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
FORCEINLINE BOOL RECTL_bIsEmptyRect(_In_ const RECTL *prcl)
FORCEINLINE VOID RECTL_vOffsetRect(_Inout_ RECTL *prcl, _In_ INT cx, _In_ INT cy)
BOOL FASTCALL co_IntSetCaretPos(int X, int Y)
static __inline PVOID DesktopHeapAlloc(IN PDESKTOP Desktop, IN SIZE_T Bytes)
#define UserIsMessageWindow(pWnd)
static __inline BOOL DesktopHeapFree(IN PDESKTOP Desktop, IN PVOID lpMem)
#define UserIsDesktopWindow(pWnd)
LONG NTAPI UserGetSystemMetrics(ULONG Index)
HBRUSH FASTCALL GetControlBrush(PWND pwnd, HDC hdc, UINT ctlType)
ULONG FASTCALL IntSetStyle(PWND pwnd, ULONG set_bits, ULONG clear_bits)
BOOL FASTCALL IntEnableWindow(HWND hWnd, BOOL bEnable)
VOID FASTCALL IntGetClientRect(PWND WindowObject, RECTL *Rect)
ENGAPI INT APIENTRY EngMulDiv(_In_ INT a, _In_ INT b, _In_ INT c)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
#define STATE_SYSTEM_PRESSED
#define CTLCOLOR_SCROLLBAR
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI DrawFrameControl(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
HWND WINAPI GetCapture(void)
#define WM_CTLCOLORSCROLLBAR
BOOL WINAPI DrawEdge(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
#define CCHILDREN_SCROLLBAR
#define SIF_DISABLENOSCROLL
#define STATE_SYSTEM_INVISIBLE
#define STATE_SYSTEM_OFFSCREEN
BOOL WINAPI IsWindowEnabled(_In_ HWND)
#define STATE_SYSTEM_UNAVAILABLE
struct tagSCROLLBARINFO SCROLLBARINFO
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
#define WS_EX_LEFTSCROLLBAR