diff --git a/reactos/dll/win32/user32/include/user32p.h b/reactos/dll/win32/user32/include/user32p.h index 4dec7cbd1f4..edc2ab1d693 100644 --- a/reactos/dll/win32/user32/include/user32p.h +++ b/reactos/dll/win32/user32/include/user32p.h @@ -119,8 +119,13 @@ #define NtUserShowCursor(bShow) \ NtUserCallOneParam((DWORD)bShow, ONEPARAM_ROUTINE_SHOWCURSOR) - - + +#define ShowCaret(hwnd) \ + NtUserShowCaret(hwnd) + +#define HideCaret(hwnd) \ + NtUserHideCaret(hwnd) + /* Internal Thread Data */ extern HINSTANCE User32Instance; diff --git a/reactos/dll/win32/user32/user32.def b/reactos/dll/win32/user32/user32.def index 5d844ab96e3..38636d0fe8f 100644 --- a/reactos/dll/win32/user32/user32.def +++ b/reactos/dll/win32/user32/user32.def @@ -387,7 +387,7 @@ GetWindowThreadProcessId@8 GetWindowWord@8 GrayStringA@36 GrayStringW@36 -HideCaret@4 +HideCaret@4=NtUserHideCaret@4 HiliteMenuItem@16 IMPGetIMEA@8 IMPGetIMEW@8 @@ -662,7 +662,7 @@ SetWindowsHookA@8 SetWindowsHookExA@16 SetWindowsHookExW@16 SetWindowsHookW@8 -ShowCaret@4 +ShowCaret@4=NtUserShowCaret@4 ShowCursor@4 ShowOwnedPopups@8 ShowScrollBar@12 diff --git a/reactos/dll/win32/user32/windows/caret.c b/reactos/dll/win32/user32/windows/caret.c index 8788aa119de..a5a001f8be6 100644 --- a/reactos/dll/win32/user32/windows/caret.c +++ b/reactos/dll/win32/user32/windows/caret.c @@ -103,16 +103,6 @@ GetCaretPos(LPPOINT lpPoint) } -/* - * @implemented - */ -BOOL STDCALL -HideCaret(HWND hWnd) -{ - return NtUserShowCaret(hWnd, FALSE); -} - - /* * @implemented */ @@ -134,13 +124,4 @@ SetCaretPos(int X, } -/* - * @implemented - */ -BOOL STDCALL -ShowCaret(HWND hWnd) -{ - return NtUserShowCaret(hWnd, TRUE); -} - /* EOF */ diff --git a/reactos/include/reactos/win32k/ntuser.h b/reactos/include/reactos/win32k/ntuser.h index 13900d4fb2a..beeea8163d3 100644 --- a/reactos/include/reactos/win32k/ntuser.h +++ b/reactos/include/reactos/win32k/ntuser.h @@ -1867,8 +1867,12 @@ NtUserSetWinEventHook( BOOL NTAPI NtUserShowCaret( - HWND hWnd, - BOOL bShow); + HWND hWnd); + +BOOL +NTAPI +NtUserHideCaret( + HWND hWnd); DWORD NTAPI diff --git a/reactos/subsystems/win32/win32k/ntuser/caret.c b/reactos/subsystems/win32/win32k/ntuser/caret.c index f0ed558bfec..01f73630e09 100644 --- a/reactos/subsystems/win32/win32k/ntuser/caret.c +++ b/reactos/subsystems/win32/win32k/ntuser/caret.c @@ -398,11 +398,9 @@ CLEANUP: END_CLEANUP; } - - BOOL STDCALL -NtUserShowCaret(HWND hWnd OPTIONAL, BOOL bShow) +NtUserShowCaret(HWND hWnd OPTIONAL) { PWINDOW_OBJECT Window = NULL; USER_REFERENCE_ENTRY Ref; @@ -418,12 +416,9 @@ NtUserShowCaret(HWND hWnd OPTIONAL, BOOL bShow) } if (Window) UserRefObjectCo(Window, &Ref); - - if (bShow) - ret = co_UserShowCaret(Window); - else - ret = co_UserHideCaret(Window); - + + ret = co_UserShowCaret(Window); + if (Window) UserDerefObjectCo(Window); RETURN(ret); @@ -433,3 +428,34 @@ CLEANUP: UserLeave(); END_CLEANUP; } + +BOOL +STDCALL +NtUserHideCaret(HWND hWnd OPTIONAL) +{ + PWINDOW_OBJECT Window = NULL; + USER_REFERENCE_ENTRY Ref; + DECLARE_RETURN(BOOL); + BOOL ret; + + DPRINT("Enter NtUserHideCaret\n"); + UserEnterExclusive(); + + if(hWnd && !(Window = UserGetWindowObject(hWnd))) + { + RETURN(FALSE); + } + + if (Window) UserRefObjectCo(Window, &Ref); + + ret = co_UserHideCaret(Window); + + if (Window) UserDerefObjectCo(Window); + + RETURN(ret); + +CLEANUP: + DPRINT("Leave NtUserHideCaret, ret=%i\n",_ret_); + UserLeave(); + END_CLEANUP; +} diff --git a/reactos/tools/nci/w32ksvc.db b/reactos/tools/nci/w32ksvc.db index acf8da665f0..46f3a942f94 100644 --- a/reactos/tools/nci/w32ksvc.db +++ b/reactos/tools/nci/w32ksvc.db @@ -411,6 +411,7 @@ NtUserGetWindowPlacement 2 NtUserGetWindowLong 3 NtUserGetWindowRect 2 NtUserGetWOWClass 2 +NtUserHideCaret 1 NtUserHiliteMenuItem 4 NtUserImpersonateDdeClientWindow 2 NtUserInitializeClientPfnArrays 4 @@ -517,7 +518,7 @@ NtUserSetWindowsHookEx 6 NtUserSetWindowStationUser 4 NtUserSetWindowWord 3 NtUserSetWinEventHook 8 -NtUserShowCaret 2 +NtUserShowCaret 1 NtUserShowScrollBar 3 NtUserShowWindow 2 NtUserShowWindowAsync 2