#define MAXCURICONHANDLES 4096
-typedef struct tagCURICON_PROCESS
-{
- LIST_ENTRY ListEntry;
- PPROCESSINFO Process;
-} CURICON_PROCESS, *PCURICON_PROCESS;
-
#ifdef NEW_CURSORICON
-typedef struct _CURICON_FRAME
+typedef struct _CURICON_OBJECT
{
+ PROCMARKHEAD head;
+ struct _CURICON_OBJECT* pcurNext;
+ UNICODE_STRING strName;
+ USHORT atomModName;
+ USHORT rt;
+ ULONG CURSORF_flags;
+ SHORT xHotspot;
+ SHORT yHotspot;
HBITMAP hbmMask;
HBITMAP hbmColor;
HBITMAP hbmAlpha;
-} CURICON_FRAME, *PCURICON_FRAME;
+ RECT rcBounds;
+ HBITMAP hbmUserAlpha;
+ ULONG bpp;
+ ULONG cx;
+ ULONG cy;
+} CURICON_OBJECT, *PCURICON_OBJECT;
-typedef struct _CURICON_OBJECT
+typedef struct tagACON
{
- PROCMARKHEAD head;
- LIST_ENTRY ListEntry;
- HANDLE Self;
- LIST_ENTRY ProcessList;
- HMODULE hModule;
- HRSRC hRsrc;
- SIZE Size;
- BYTE Shadow;
- BOOL bIcon;
- POINTL ptlHotspot;
- CURICON_FRAME aFrame[1];
-} CURICON_OBJECT, *PCURICON_OBJECT;
+ PROCMARKHEAD head;
+ struct _CURICON_OBJECT* pcurNext;
+ UNICODE_STRING strName;
+ USHORT atomModName;
+ USHORT rt;
+ ULONG CURSORF_flags;
+ INT cpcur;
+ INT cicur;
+ PCURICON_OBJECT * aspcur;
+ DWORD * aicur;
+ INT * ajifRate;
+ INT iicur;
+} ACON, *PACON;
+
+C_ASSERT(FIELD_OFFSET(ACON, cpcur) == FIELD_OFFSET(CURICON_OBJECT, xHotspot));
#else
+typedef struct tagCURICON_PROCESS
+{
+ LIST_ENTRY ListEntry;
+ PPROCESSINFO Process;
+} CURICON_PROCESS, *PCURICON_PROCESS;
+
typedef struct _CURICON_OBJECT
{
PROCMARKHEAD head;
} SYSTEM_CURSORINFO, *PSYSTEM_CURSORINFO;
BOOL InitCursorImpl(VOID);
-PCURICON_OBJECT IntCreateCurIconHandle(VOID);
+HANDLE IntCreateCurIconHandle(BOOLEAN Anim);
VOID FASTCALL IntCleanupCurIcons(struct _EPROCESS *Process, PPROCESSINFO Win32Process);
BOOL UserDrawIconEx(HDC hDc, INT xLeft, INT yTop, PCURICON_OBJECT pIcon, INT cxWidth,
BOOL UserSetCursorPos( INT x, INT y, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook);
BOOL APIENTRY UserClipCursor(RECTL *prcl);
PSYSTEM_CURSORINFO IntGetSysCursorInfo(VOID);
+HCURSOR FASTCALL IntSetCursor(HCURSOR hCursor);
+BOOL FASTCALL IntDestroyCursor(HANDLE hCurIcon, BOOL bForce);
#define IntReleaseCurIconObject(CurIconObj) \
UserDereferenceObject(CurIconObj)