f780645b1dc9c1145df92171205b9157b25d245e
[reactos.git] / reactos / subsystems / win32 / win32k / include / cursoricon.h
1 #ifndef _WIN32K_CURSORICON_H
2 #define _WIN32K_CURSORICON_H
3
4 #define MAXCURICONHANDLES 4096
5
6 typedef struct tagCURICON_PROCESS
7 {
8 LIST_ENTRY ListEntry;
9 PW32PROCESS Process;
10 } CURICON_PROCESS, *PCURICON_PROCESS;
11
12 typedef struct _CURICON_OBJECT
13 {
14 LIST_ENTRY ListEntry;
15 HANDLE Self;
16 LIST_ENTRY ProcessList;
17 HMODULE hModule;
18 HRSRC hRsrc;
19 HRSRC hGroupRsrc;
20 SIZE Size;
21 BYTE Shadow;
22 ICONINFO IconInfo;
23 } CURICON_OBJECT, *PCURICON_OBJECT;
24
25 typedef struct _CURSORCLIP_INFO
26 {
27 BOOL IsClipped;
28 UINT Left;
29 UINT Top;
30 UINT Right;
31 UINT Bottom;
32 } CURSORCLIP_INFO, *PCURSORCLIP_INFO;
33
34 typedef struct _CURSORACCELERATION_INFO
35 {
36 UINT FirstThreshold;
37 UINT SecondThreshold;
38 UINT Acceleration;
39 } CURSORACCELERATION_INFO, *PCURSORACCELERATION_INFO;
40
41 typedef struct _SYSTEM_CURSORINFO
42 {
43 BOOL Enabled;
44 BOOL SwapButtons;
45 UINT ButtonsDown;
46 CURSORCLIP_INFO CursorClipInfo;
47 PCURICON_OBJECT CurrentCursorObject;
48 UINT WheelScroLines;
49 UINT WheelScroChars;
50 BYTE ShowingCursor;
51 UINT DblClickSpeed;
52 UINT DblClickWidth;
53 UINT DblClickHeight;
54
55 UINT MouseHoverTime;
56 UINT MouseHoverWidth;
57 UINT MouseHoverHeight;
58
59 UINT MouseSpeed;
60 CURSORACCELERATION_INFO CursorAccelerationInfo;
61
62 DWORD LastBtnDown;
63 LONG LastBtnDownX;
64 LONG LastBtnDownY;
65 HANDLE LastClkWnd;
66 BOOL ScreenSaverRunning;
67 } SYSTEM_CURSORINFO, *PSYSTEM_CURSORINFO;
68
69 HCURSOR FASTCALL IntSetCursor(PWINSTATION_OBJECT WinStaObject, PCURICON_OBJECT NewCursor, BOOL ForceChange);
70 BOOL FASTCALL IntSetupCurIconHandles(PWINSTATION_OBJECT WinStaObject);
71 PCURICON_OBJECT FASTCALL IntCreateCurIconHandle(PWINSTATION_OBJECT WinStaObject);
72 VOID FASTCALL IntCleanupCurIcons(struct _EPROCESS *Process, PW32PROCESS Win32Process);
73
74 BOOL FASTCALL IntGetCursorLocation(PWINSTATION_OBJECT WinStaObject, POINT *loc);
75
76 BOOL UserDrawIconEx(HDC hDc, INT xLeft, INT yTop, PCURICON_OBJECT pIcon, INT cxWidth,
77 INT cyHeight, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags);
78 PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon);
79
80 int NTAPI UserShowCursor(BOOL bShow);
81
82 #define IntGetSysCursorInfo(WinStaObj) \
83 (PSYSTEM_CURSORINFO)((WinStaObj)->SystemCursor)
84
85 #define IntReleaseCurIconObject(CurIconObj) \
86 UserDereferenceObject(CurIconObj)
87
88 #endif /* _WIN32K_CURSORICON_H */
89
90 /* EOF */
91
92