blob: 8a394f8a512b1884b840cdc57c21b4b25ed562fa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#ifndef _COOLSB_INTERNAL_INCLUDED
#define _COOLSB_INTERNAL_INCLUDED
#ifdef __cplusplus
extern "C"{
#endif
#include <windows.h>
//
// SCROLLBAR datatype. There are two of these structures per window
//
typedef struct
{
UINT fScrollFlags; //flags
BOOL fScrollVisible; //if this scrollbar visible?
SCROLLINFO scrollInfo; //positional data (range, position, page size etc)
int nArrowLength; //perpendicular size (height of a horizontal, width of a vertical)
int nArrowWidth; //parallel size (width of horz, height of vert)
//data for inserted buttons
SCROLLBUT sbButtons[MAX_COOLSB_BUTS];
int nButtons;
int nButSizeBefore; //size to the left / above the bar
int nButSizeAfter; //size to the right / below the bar
BOOL fButVisibleBefore; //if the buttons to the left are visible
BOOL fButVisibleAfter; //if the buttons to the right are visible
int nBarType; //SB_HORZ / SB_VERT
UINT fFlatScrollbar; //do we display flat scrollbars?
int nMinThumbSize;
} SCROLLBAR;
//
// Container structure for a cool scrollbar window.
//
typedef struct
{
UINT bars; //which of the scrollbars do we handle? SB_VERT / SB_HORZ / SB_BOTH
WNDPROC oldproc; //old window procedure to call for every message
SCROLLBAR sbarHorz; //one scrollbar structure each for
SCROLLBAR sbarVert; //the horizontal and vertical scrollbars
BOOL fThumbTracking; // are we currently thumb-tracking??
BOOL fLeftScrollbar; // support the WS_EX_LEFTSCROLLBAR style
HWND hwndToolTip; // tooltip support!!!
//size of the window borders
int cxLeftEdge, cxRightEdge;
int cyTopEdge, cyBottomEdge;
// To prevent calling original WindowProc in response
// to our own temporary style change (fixes TreeView problem)
BOOL bPreventStyleChange;
} SCROLLWND;
//
// PRIVATE INTERNAL FUNCTIONS
//
SCROLLWND *GetScrollWndFromHwnd(HWND hwnd);
#define InvertCOLORREF(col) ((~col) & 0x00ffffff)
#define COOLSB_TIMERID1 65533 //initial timer
#define COOLSB_TIMERID2 65534 //scroll message timer
#define COOLSB_TIMERID3 -14 //mouse hover timer
#define COOLSB_TIMERINTERVAL1 300
#define COOLSB_TIMERINTERVAL2 55
#define COOLSB_TIMERINTERVAL3 20 //mouse hover time
//
// direction: 0 - same axis as scrollbar (i.e. width of a horizontal bar)
// 1 - perpendicular dimesion (i.e. height of a horizontal bar)
//
#define SM_CXVERTSB 1
#define SM_CYVERTSB 0
#define SM_CXHORZSB 0
#define SM_CYHORZSB 1
#define SM_SCROLL_WIDTH 1
#define SM_SCROLL_LENGTH 0
#ifdef __cplusplus
}
#endif
#endif
|