X-Git-Url: http://git.jankratochvil.net/?p=reactos.git;a=blobdiff_plain;f=lib%2Fuser32%2Fwindows%2Fcursor.c;h=db64b8b3162f15888be4ffefab7dca151d8e9c23;hp=71c88e12795a205ccfa49f591d9ffc77d413a5af;hb=HEAD;hpb=7c0db166f81fbe8c8b913d7f26048e337d383605 diff --git a/lib/user32/windows/cursor.c b/lib/user32/windows/cursor.c index 71c88e1..db64b8b 100644 --- a/lib/user32/windows/cursor.c +++ b/lib/user32/windows/cursor.c @@ -30,19 +30,38 @@ #include #include +#include #include +/* INTERNAL ******************************************************************/ + +/* This callback routine is called directly after switching to gui mode */ +NTSTATUS STDCALL +User32SetupDefaultCursors(PVOID Arguments, ULONG ArgumentLength) +{ + LRESULT Result = TRUE; + /* FIXME load system cursor scheme */ + + return(ZwCallbackReturn(&Result, sizeof(LRESULT), STATUS_SUCCESS)); +} + /* FUNCTIONS *****************************************************************/ -WINBOOL STDCALL -CreateCaret(HWND hWnd, - HBITMAP hBitmap, - int nWidth, - int nHeight) + +/* + * @unimplemented + */ +HCURSOR STDCALL +CopyCursor(HCURSOR pcur) { - return FALSE; + UNIMPLEMENTED; + return (HCURSOR)0; } + +/* + * @unimplemented + */ HCURSOR STDCALL CreateCursor(HINSTANCE hInst, int xHotSpot, @@ -52,64 +71,97 @@ CreateCursor(HINSTANCE hInst, CONST VOID *pvANDPlane, CONST VOID *pvXORPlane) { - + + UNIMPLEMENTED; return (HCURSOR)0; } -WINBOOL STDCALL -DestroyCaret(VOID) -{ - return FALSE; -} +/* + * @unimplemented + */ WINBOOL STDCALL DestroyCursor(HCURSOR hCursor) { + UNIMPLEMENTED; return FALSE; } -UINT STDCALL -GetCaretBlinkTime(VOID) -{ - return 0; -} - -WINBOOL STDCALL -GetCaretPos(LPPOINT lpPoint) -{ - return FALSE; -} +/* + * @implemented + */ WINBOOL STDCALL GetClipCursor(LPRECT lpRect) { - return FALSE; + RECT rc; + WINBOOL res; + + if(!lpRect) + { + SetLastError(ERROR_NOACCESS); + return FALSE; + } + + RtlCopyMemory(&rc, lpRect, sizeof(RECT)); + res = NtUserGetClipCursor(&rc); + RtlCopyMemory(lpRect, &rc, sizeof(RECT)); + + return res; } + +/* + * @unimplemented + */ HCURSOR STDCALL GetCursor(VOID) { + UNIMPLEMENTED; return (HCURSOR)0; } + +/* + * @unimplemented + */ WINBOOL STDCALL GetCursorInfo(PCURSORINFO pci) { + UNIMPLEMENTED; return FALSE; } + +/* + * @implemented + */ WINBOOL STDCALL GetCursorPos(LPPOINT lpPoint) { - return FALSE; + POINT pos; + WINBOOL res; + /* Windows doesn't check if lpPoint == NULL, we do */ + if(!lpPoint) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + res = (WINBOOL)NtUserCallTwoParam((DWORD)&pos, (DWORD)FALSE, + TWOPARAM_ROUTINE_CURSORPOSITION); + if(res) + { + lpPoint->x = pos.x; + lpPoint->y = pos.y; + } + return res; } -WINBOOL STDCALL -HideCaret(HWND hWnd) -{ - return FALSE; -} +/* + * @implemented + */ HCURSOR STDCALL LoadCursorA(HINSTANCE hInstance, LPCSTR lpCursorName) @@ -118,6 +170,10 @@ LoadCursorA(HINSTANCE hInstance, LR_DEFAULTSIZE)); } + +/* + * @implemented + */ HCURSOR STDCALL LoadCursorFromFileA(LPCSTR lpFileName) { @@ -130,6 +186,10 @@ LoadCursorFromFileA(LPCSTR lpFileName) return(Result); } + +/* + * @implemented + */ HCURSOR STDCALL LoadCursorFromFileW(LPCWSTR lpFileName) { @@ -137,6 +197,10 @@ LoadCursorFromFileW(LPCWSTR lpFileName) LR_LOADFROMFILE | LR_DEFAULTSIZE)); } + +/* + * @implemented + */ HCURSOR STDCALL LoadCursorW(HINSTANCE hInstance, LPCWSTR lpCursorName) @@ -145,47 +209,77 @@ LoadCursorW(HINSTANCE hInstance, LR_DEFAULTSIZE)); } -WINBOOL STDCALL -SetCaretBlinkTime(UINT uMSeconds) -{ - return FALSE; -} -WINBOOL STDCALL -SetCaretPos(int X, - int Y) +/* + * @implemented + */ +WINBOOL +STDCALL +ClipCursor( + CONST RECT *lpRect) { - return FALSE; + RECT rc; + if(lpRect) + { + RtlCopyMemory(&rc, lpRect, sizeof(RECT)); + return NtUserClipCursor(&rc); + } + else + return NtUserClipCursor(NULL); } + +/* + * @unimplemented + */ HCURSOR STDCALL SetCursor(HCURSOR hCursor) { + UNIMPLEMENTED; return (HCURSOR)0; } + +/* + * @implemented + */ WINBOOL STDCALL SetCursorPos(int X, int Y) { - return FALSE; + POINT pos; + pos.x = (LONG)X; + pos.y = (LONG)Y; + return (WINBOOL)NtUserCallTwoParam((DWORD)&pos, (DWORD)TRUE, + TWOPARAM_ROUTINE_CURSORPOSITION); } + +/* + * @unimplemented + */ WINBOOL STDCALL SetSystemCursor(HCURSOR hcur, DWORD id) { + UNIMPLEMENTED; return FALSE; } -WINBOOL STDCALL -ShowCaret(HWND hWnd) -{ - return FALSE; -} +/* + * @unimplemented + */ int STDCALL ShowCursor(WINBOOL bShow) { + UNIMPLEMENTED; + return 0; +} + +HCURSOR +CursorIconToCursor(HICON hIcon, BOOL SemiTransparent) +{ + UNIMPLEMENTED; return 0; }