[WIN32K]
[reactos.git] / subsystems / win32 / win32k / include / scroll.h
1 #pragma once
2
3 typedef struct tagSBCALC
4 {
5 INT posMin;
6 INT posMax;
7 INT page;
8 INT pos;
9 INT pxTop;
10 INT pxBottom;
11 INT pxLeft;
12 INT pxRight;
13 INT cpxThumb;
14 INT pxUpArrow;
15 INT pxDownArrow;
16 INT pxStart;
17 INT pxThumbBottom;
18 INT pxThumbTop;
19 INT cpx;
20 INT pxMin;
21 } SBCALC, *PSBCALC;
22
23 typedef VOID (NEAR NTAPI *PFN_SCROLLBAR)(PWND, UINT, WPARAM, LPARAM, PSBCALC);
24
25 typedef struct tagSBTRACK
26 {
27 ULONG fHitOld:1;
28 ULONG fTrackVert:1;
29 ULONG fCtlSB:1;
30 ULONG fTrackRecalc:1;
31 PWND spwndTrack;
32 PWND spwndSB;
33 PWND spwndSBNotify;
34 RECT rcTrack;
35 PFN_SCROLLBAR xxxpfnSB;
36 UINT cmdSB;
37 UINT_PTR hTimerSB;
38 INT dpxThumb;
39 INT pxOld;
40 INT posOld;
41 INT posNew;
42 INT nBar;
43 PSBCALC pSBCalc;
44 } SBTRACK, *PSBTRACK;
45
46
47 typedef struct _SBINFOEX
48 {
49 SCROLLBARINFO ScrollBarInfo;
50 SCROLLINFO ScrollInfo;
51 } SBINFOEX, *PSBINFOEX;
52
53 #define IntGetScrollbarInfoFromWindow(Window, i) \
54 ((PSCROLLBARINFO)(&((Window)->pSBInfo + i)->ScrollBarInfo))
55
56 #define IntGetScrollInfoFromWindow(Window, i) \
57 ((LPSCROLLINFO)(&((Window)->pSBInfo + i)->ScrollInfo))
58
59 #define SBOBJ_TO_SBID(Obj) ((Obj) - OBJID_HSCROLL)
60 #define SBID_IS_VALID(id) (id == SB_HORZ || id == SB_VERT || id == SB_CTL)
61
62 BOOL FASTCALL co_IntCreateScrollBars(PWINDOW_OBJECT Window);
63 BOOL FASTCALL IntDestroyScrollBars(PWINDOW_OBJECT Window);