Sync with trunk (r48008)
[reactos.git] / 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 _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 ClickLockActive;
45 DWORD ClickLockTime;
46 // BOOL SwapButtons;
47 UINT ButtonsDown;
48 CURSORCLIP_INFO CursorClipInfo;
49 PCURICON_OBJECT CurrentCursorObject;
50 INT ShowingCursor;
51 /*
52 UINT WheelScroLines;
53 UINT WheelScroChars;
54 UINT DblClickSpeed;
55 UINT DblClickWidth;
56 UINT DblClickHeight;
57
58 UINT MouseHoverTime;
59 UINT MouseHoverWidth;
60 UINT MouseHoverHeight;
61
62 UINT MouseSpeed;
63 CURSORACCELERATION_INFO CursorAccelerationInfo;
64 */
65 DWORD LastBtnDown;
66 LONG LastBtnDownX;
67 LONG LastBtnDownY;
68 HANDLE LastClkWnd;
69 BOOL ScreenSaverRunning;
70 } SYSTEM_CURSORINFO, *PSYSTEM_CURSORINFO;
71
72 BOOL InitCursorImpl();
73 PCURICON_OBJECT IntCreateCurIconHandle();
74 VOID FASTCALL IntCleanupCurIcons(struct _EPROCESS *Process, PPROCESSINFO Win32Process);
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 BOOL UserSetCursorPos( INT x, INT y, BOOL SendMouseMoveMsg);
81
82 int UserShowCursor(BOOL bShow);
83
84 PSYSTEM_CURSORINFO IntGetSysCursorInfo();
85
86 #define IntReleaseCurIconObject(CurIconObj) \
87 UserDereferenceObject(CurIconObj)
88
89 ULONG
90 NTAPI
91 GreSetPointerShape(
92 HDC hdc,
93 HBITMAP hbmMask,
94 HBITMAP hbmColor,
95 LONG xHot,
96 LONG yHot,
97 LONG x,
98 LONG y);
99
100 VOID
101 NTAPI
102 GreMovePointer(
103 HDC hdc,
104 LONG x,
105 LONG y);
106
107 /* EOF */