ca48c934f02e0eb63780e2d715674e1ced16faff
[reactos.git] / reactos / subsystems / win32 / win32k / include / cursoricon.h
1 #pragma once
2
3 #define MAXCURICONHANDLES 4096
4
5 typedef struct tagCURICON_PROCESS
6 {
7 LIST_ENTRY ListEntry;
8 PPROCESSINFO Process;
9 } CURICON_PROCESS, *PCURICON_PROCESS;
10
11 typedef struct _CURICON_OBJECT
12 {
13 PROCMARKHEAD head;
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 _CURSORACCELERATION_INFO
26 {
27 UINT FirstThreshold;
28 UINT SecondThreshold;
29 UINT Acceleration;
30 } CURSORACCELERATION_INFO, *PCURSORACCELERATION_INFO;
31
32 typedef struct _SYSTEM_CURSORINFO
33 {
34 BOOL Enabled;
35 BOOL ClickLockActive;
36 DWORD ClickLockTime;
37 // BOOL SwapButtons;
38 UINT ButtonsDown;
39 RECTL rcClip;
40 BOOL bClipped;
41 PCURICON_OBJECT CurrentCursorObject;
42 INT ShowingCursor;
43 /*
44 UINT WheelScroLines;
45 UINT WheelScroChars;
46 UINT DblClickSpeed;
47 UINT DblClickWidth;
48 UINT DblClickHeight;
49
50 UINT MouseHoverTime;
51 UINT MouseHoverWidth;
52 UINT MouseHoverHeight;
53
54 UINT MouseSpeed;
55 CURSORACCELERATION_INFO CursorAccelerationInfo;
56 */
57 DWORD LastBtnDown;
58 LONG LastBtnDownX;
59 LONG LastBtnDownY;
60 HANDLE LastClkWnd;
61 BOOL ScreenSaverRunning;
62 } SYSTEM_CURSORINFO, *PSYSTEM_CURSORINFO;
63
64 BOOL InitCursorImpl(VOID);
65 PCURICON_OBJECT IntCreateCurIconHandle(VOID);
66 VOID FASTCALL IntCleanupCurIcons(struct _EPROCESS *Process, PPROCESSINFO Win32Process);
67
68 BOOL UserDrawIconEx(HDC hDc, INT xLeft, INT yTop, PCURICON_OBJECT pIcon, INT cxWidth,
69 INT cyHeight, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags);
70 PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon);
71 BOOL UserSetCursorPos( INT x, INT y, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook);
72 BOOL APIENTRY UserClipCursor(RECTL *prcl);
73 PSYSTEM_CURSORINFO IntGetSysCursorInfo(VOID);
74
75 #define IntReleaseCurIconObject(CurIconObj) \
76 UserDereferenceObject(CurIconObj)
77
78 /* EOF */