[ros-diffs] [greatlrd] 20470: Implement ShowCursor,
it is a issue with quake when you moving the mouse,
the mousepointer will show,
when you stand still with the mouse it will not show the
mousepointer.
greatlrd at svn.reactos.org
greatlrd at svn.reactos.org
Fri Dec 30 23:03:20 CET 2005
Implement ShowCursor, it is a issue with quake when you moving the
mouse, the mousepointer will show, when you stand still with the mouse
it will not show the mousepointer.
Modified: trunk/reactos/include/win32k/ntuser.h
Modified: trunk/reactos/lib/user32/include/user32p.h
Modified: trunk/reactos/lib/user32/windows/cursor.c
Modified: trunk/reactos/subsys/win32k/ntuser/misc.c
_____
Modified: trunk/reactos/include/win32k/ntuser.h
--- trunk/reactos/include/win32k/ntuser.h 2005-12-30 21:18:25 UTC
(rev 20469)
+++ trunk/reactos/include/win32k/ntuser.h 2005-12-30 22:02:59 UTC
(rev 20470)
@@ -379,6 +379,7 @@
#define ONEPARAM_ROUTINE_MSQSETWAKEMASK 0x27
#define ONEPARAM_ROUTINE_GETKEYBOARDTYPE 0x28
#define ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT 0x29
+#define ONEPARAM_ROUTINE_SHOWCURSOR 0x30
DWORD
NTAPI
NtUserCallOneParam(
_____
Modified: trunk/reactos/lib/user32/include/user32p.h
--- trunk/reactos/lib/user32/include/user32p.h 2005-12-30 21:18:25 UTC
(rev 20469)
+++ trunk/reactos/lib/user32/include/user32p.h 2005-12-30 22:02:59 UTC
(rev 20470)
@@ -112,6 +112,11 @@
#define NtUserEnableProcessWindowGhosting(bEnable) \
NtUserCallOneParam((DWORD)bEnable,
ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING)
+#define NtUserShowCursor(bShow) \
+ NtUserCallOneParam((DWORD)bShow, ONEPARAM_ROUTINE_SHOWCURSOR)
+
+
+
/* Internal Thread Data */
extern HINSTANCE User32Instance;
_____
Modified: trunk/reactos/lib/user32/windows/cursor.c
--- trunk/reactos/lib/user32/windows/cursor.c 2005-12-30 21:18:25 UTC
(rev 20469)
+++ trunk/reactos/lib/user32/windows/cursor.c 2005-12-30 22:02:59 UTC
(rev 20470)
@@ -320,13 +320,12 @@
/*
- * @unimplemented
+ * @implemented
*/
int STDCALL
ShowCursor(BOOL bShow)
{
- UNIMPLEMENTED;
- return 0;
+ return NtUserShowCursor(bShow);
}
HCURSOR
_____
Modified: trunk/reactos/subsys/win32k/ntuser/misc.c
--- trunk/reactos/subsys/win32k/ntuser/misc.c 2005-12-30 21:18:25 UTC
(rev 20469)
+++ trunk/reactos/subsys/win32k/ntuser/misc.c 2005-12-30 22:02:59 UTC
(rev 20470)
@@ -11,7 +11,8 @@
#include <w32k.h>
-#define NDEBUG
+//#define NDEBUG
+#undef NDEBUG
#include <debug.h>
/* registered Logon process */
@@ -164,6 +165,7 @@
END_CLEANUP;
}
+
/*
* @implemented
*/
@@ -176,10 +178,90 @@
DECLARE_RETURN(DWORD);
DPRINT("Enter NtUserCallOneParam\n");
+
+
+ if (Routine == ONEPARAM_ROUTINE_SHOWCURSOR)
+ {
+ PWINSTATION_OBJECT WinSta =
PsGetWin32Thread()->Desktop->WindowStation;
+ PSYSTEM_CURSORINFO CurInfo;
+
+ HDC Screen;
+ HBITMAP dcbmp;
+ SURFOBJ *SurfObj;
+ BITMAPOBJ *BitmapObj;
+ GDIDEVICE *ppdev;
+ GDIPOINTER *pgp;
+
+ if(!(Screen = IntGetScreenDC()))
+ {
+ return 1; /* No mouse */
+ }
+
+ PDC dc = DC_LockDc(Screen);
+
+ if (!dc)
+ {
+ return 1; /* No mouse */
+ }
+
+ dcbmp = dc->w.hBitmap;
+ DC_UnlockDc(dc);
+
+ BitmapObj = BITMAPOBJ_LockBitmap(dcbmp);
+ if ( !BitmapObj )
+ {
+ BITMAPOBJ_UnlockBitmap(BitmapObj);
+ return 1; /* No Mouse */
+ }
+
+ SurfObj = &BitmapObj->SurfObj;
+ if (SurfObj == NULL)
+ {
+ BITMAPOBJ_UnlockBitmap(BitmapObj);
+ return 1; /* No mouse */
+ }
+
+ ppdev = GDIDEV(SurfObj);
+
+ if(ppdev == NULL)
+ {
+ BITMAPOBJ_UnlockBitmap(BitmapObj);
+ return 1; /* No mouse */
+ }
+
+ pgp = &ppdev->Pointer;
+
+ CurInfo = IntGetSysCursorInfo(WinSta);
+
+ if (Param == FALSE)
+ {
+ if (CurInfo->ShowingCursor != 0)
+ {
+ ppdev->SafetyRemoveCount = 1;
+ ppdev->SafetyRemoveLevel = 1;
+ EngMovePointer(SurfObj,-1,-1,NULL);
+ CurInfo->ShowingCursor = 0;
+ }
+
+ }
+ else
+ {
+ /* Show Cursor */
+ ppdev->SafetyRemoveCount = 0;
+ ppdev->SafetyRemoveLevel = 0;
+ EngMovePointer(SurfObj,-1,-1,NULL);
+ CurInfo->ShowingCursor = CURSOR_SHOWING;
+ }
+
+ BITMAPOBJ_UnlockBitmap(BitmapObj);
+ return 0;
+ }
+
+
UserEnterExclusive();
switch(Routine)
- {
+ {
case ONEPARAM_ROUTINE_GETMENU:
{
PWINDOW_OBJECT Window;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20051230/2107bca4/attachment.html
More information about the Ros-diffs
mailing list