Author: hbelusca
Date: Sat Jun 1 22:49:50 2013
New Revision: 59135
URL:
http://svn.reactos.org/svn/reactos?rev=59135&view=rev
Log:
[KERNEL32-CONSRV]
- Implement SetConsoleCursor and ShowConsoleCursor (set the shape of the cursor, and
show/hide it). It appears that SetConsoleCursor acts only on graphics screen buffers
(tested on Windows).
I personnaly think it's a limitation we can suppress, but at the moment I keep it.
- Implement SetConsoleMaximumWindowSize which does nothing else than returning TRUE but
doesn't give any constraint on the maximum size of the console window (tested on
Windows Server 2003).
See
http://undoc.airesoft.co.uk/kernel32.dll/SetConsoleCursor.php ,
http://undoc.airesoft.co.uk/kernel32.dll/ShowConsoleCursor.php and
http://undoc.airesoft.co.uk/kernel32.dll/SetConsoleMaximumWindowSize.php for more
details.
Useful for the NTVDM interface !
[CONSRV:Gui frontend]
- Fix "Select all" action.
- Enable or disable "Copy" and "Paste" commands in the edition menu.
Modified:
trunk/reactos/dll/win32/kernel32/client/console/console.c
trunk/reactos/include/psdk/wincon.h
trunk/reactos/include/reactos/subsys/win/conmsg.h
trunk/reactos/win32ss/user/consrv/api.h
trunk/reactos/win32ss/user/consrv/conio.h
trunk/reactos/win32ss/user/consrv/console.c
trunk/reactos/win32ss/user/consrv/frontends/gui/guisettings.h
trunk/reactos/win32ss/user/consrv/frontends/gui/guiterm.c
trunk/reactos/win32ss/user/consrv/frontends/tui/tuiterm.c
trunk/reactos/win32ss/user/consrv/include/conio.h
trunk/reactos/win32ss/user/consrv/init.c
Modified: trunk/reactos/dll/win32/kernel32/client/console/console.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
==============================================================================
--- trunk/reactos/dll/win32/kernel32/client/console/console.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/client/console/console.c [iso-8859-1] Sat Jun 1
22:49:50 2013
@@ -541,16 +541,32 @@
/*
- * @unimplemented (Undocumented)
- */
-BOOL
-WINAPI
-SetConsoleCursor(DWORD Unknown0,
- DWORD Unknown1)
-{
- DPRINT1("SetConsoleCursor(0x%x, 0x%x) UNIMPLEMENTED!\n", Unknown0,
Unknown1);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ * @implemented (Undocumented)
+ * @note See
http://undoc.airesoft.co.uk/kernel32.dll/SetConsoleCursor.php
+ */
+BOOL
+WINAPI
+SetConsoleCursor(HANDLE hConsoleOutput,
+ HCURSOR hCursor)
+{
+ NTSTATUS Status;
+ CONSOLE_API_MESSAGE ApiMessage;
+ PCONSOLE_SETCURSOR SetCursorRequest = &ApiMessage.Data.SetCursorRequest;
+
+ SetCursorRequest->OutputHandle = hConsoleOutput;
+ SetCursorRequest->hCursor = hCursor;
+
+ Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
+ NULL,
+ CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX,
ConsolepSetCursor),
+ sizeof(CONSOLE_SETCURSOR));
+ if (!NT_SUCCESS(Status))
+ {
+ BaseSetLastNTError(Status);
+ return FALSE;
+ }
+
+ return TRUE;
}
@@ -652,16 +668,18 @@
/*
- * @unimplemented (Undocumented)
- */
-BOOL
-WINAPI
-SetConsoleMaximumWindowSize(DWORD Unknown0,
- DWORD Unknown1)
-{
- DPRINT1("SetConsoleMaximumWindowSize(0x%x, 0x%x) UNIMPLEMENTED!\n",
Unknown0, Unknown1);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ * @implemented (Undocumented)
+ * @note See
http://undoc.airesoft.co.uk/kernel32.dll/SetConsoleMaximumWindowSize.php
+ * Does nothing, returns TRUE only. Checked on Windows Server 2003.
+ */
+BOOL
+WINAPI
+SetConsoleMaximumWindowSize(HANDLE hConsoleOutput,
+ COORD dwMaximumSize)
+{
+ DPRINT1("SetConsoleMaximumWindowSize(0x%x, {%d, %d}) does nothing\n",
+ hConsoleOutput, dwMaximumSize.X, dwMaximumSize.Y);
+ return TRUE;
}
@@ -707,16 +725,27 @@
}
/*
- * @unimplemented (Undocumented)
- */
-DWORD
-WINAPI
-ShowConsoleCursor(DWORD Unknown0,
- DWORD Unknown1)
-{
- DPRINT1("ShowConsoleCursor(0x%x, 0x%x) UNIMPLEMENTED!\n", Unknown0,
Unknown1);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ * @implemented (Undocumented)
+ * @note See
http://undoc.airesoft.co.uk/kernel32.dll/ShowConsoleCursor.php
+ */
+INT
+WINAPI
+ShowConsoleCursor(HANDLE hConsoleOutput,
+ BOOL bShow)
+{
+ CONSOLE_API_MESSAGE ApiMessage;
+ PCONSOLE_SHOWCURSOR ShowCursorRequest = &ApiMessage.Data.ShowCursorRequest;
+
+ ShowCursorRequest->OutputHandle = hConsoleOutput;
+ ShowCursorRequest->Show = bShow;
+ ShowCursorRequest->RefCount = 0;
+
+ CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
+ NULL,
+ CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX,
ConsolepShowCursor),
+ sizeof(CONSOLE_SHOWCURSOR));
+
+ return ShowCursorRequest->RefCount;
}
Modified: trunk/reactos/include/psdk/wincon.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/wincon.h?rev=…
==============================================================================
--- trunk/reactos/include/psdk/wincon.h [iso-8859-1] (original)
+++ trunk/reactos/include/psdk/wincon.h [iso-8859-1] Sat Jun 1 22:49:50 2013
@@ -456,6 +456,10 @@
HMENU WINAPI ConsoleMenuControl(_In_ HANDLE, _In_ DWORD, _In_ DWORD);
/* Undocumented */
BOOL WINAPI SetConsoleMenuClose(_In_ BOOL);
+/* Undocumented, see
http://undoc.airesoft.co.uk/kernel32.dll/SetConsoleCursor.php */
+BOOL WINAPI SetConsoleCursor(_In_ HANDLE, _In_ HCURSOR);
+/* Undocumented, see
http://undoc.airesoft.co.uk/kernel32.dll/ShowConsoleCursor.php */
+INT WINAPI ShowConsoleCursor(_In_ HANDLE, _In_ BOOL);
BOOL WINAPI WriteConsoleA(HANDLE,CONST VOID*,DWORD,LPDWORD,LPVOID);
BOOL WINAPI WriteConsoleW(HANDLE,CONST VOID*,DWORD,LPDWORD,LPVOID);
Modified: trunk/reactos/include/reactos/subsys/win/conmsg.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/subsys/win…
==============================================================================
--- trunk/reactos/include/reactos/subsys/win/conmsg.h [iso-8859-1] (original)
+++ trunk/reactos/include/reactos/subsys/win/conmsg.h [iso-8859-1] Sat Jun 1 22:49:50
2013
@@ -62,8 +62,8 @@
ConsolepCreateScreenBuffer,
ConsolepInvalidateBitMapRect,
// ConsolepVDMOperation,
- // ConsolepSetCursor,
- // ConsolepShowCursor,
+ ConsolepSetCursor,
+ ConsolepShowCursor,
ConsolepMenuControl,
// ConsolepSetPalette,
ConsolepSetDisplayMode,
@@ -221,6 +221,19 @@
typedef struct
{
HANDLE OutputHandle;
+ BOOL Show;
+ INT RefCount;
+} CONSOLE_SHOWCURSOR, *PCONSOLE_SHOWCURSOR;
+
+typedef struct
+{
+ HANDLE OutputHandle;
+ HCURSOR hCursor;
+} CONSOLE_SETCURSOR, *PCONSOLE_SETCURSOR;
+
+typedef struct
+{
+ HANDLE OutputHandle;
CONSOLE_CURSOR_INFO Info;
} CONSOLE_GETSETCURSORINFO, *PCONSOLE_GETSETCURSORINFO;
@@ -627,6 +640,8 @@
CONSOLE_DUPLICATEHANDLE DuplicateHandleRequest;
/* Cursor */
+ CONSOLE_SHOWCURSOR ShowCursorRequest;
+ CONSOLE_SETCURSOR SetCursorRequest;
CONSOLE_GETSETCURSORINFO CursorInfoRequest;
CONSOLE_SETCURSORPOSITION SetCursorPositionRequest;
Modified: trunk/reactos/win32ss/user/consrv/api.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/api.h?…
==============================================================================
--- trunk/reactos/win32ss/user/consrv/api.h [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/consrv/api.h [iso-8859-1] Sat Jun 1 22:49:50 2013
@@ -54,6 +54,8 @@
CSR_API(SrvGetConsoleDisplayMode);
CSR_API(SrvSetConsoleDisplayMode);
CSR_API(SrvGetLargestConsoleWindowSize);
+CSR_API(SrvShowConsoleCursor);
+CSR_API(SrvSetConsoleCursor);
CSR_API(SrvConsoleMenuControl);
CSR_API(SrvSetConsoleMenuClose);
CSR_API(SrvSetConsoleWindowInfo);
Modified: trunk/reactos/win32ss/user/consrv/conio.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/conio.…
==============================================================================
--- trunk/reactos/win32ss/user/consrv/conio.h [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/consrv/conio.h [iso-8859-1] Sat Jun 1 22:49:50 2013
@@ -40,6 +40,10 @@
(Console)->TermIFace.Vtbl->GetDisplayMode(Console)
#define ConioSetDisplayMode(Console, NewMode) \
(Console)->TermIFace.Vtbl->SetDisplayMode((Console), (NewMode))
+#define ConioShowMouseCursor(Console, Show) \
+ (Console)->TermIFace.Vtbl->ShowMouseCursor((Console), (Show))
+#define ConioSetMouseCursor(Console, hCursor) \
+ (Console)->TermIFace.Vtbl->SetMouseCursor((Console), (hCursor))
#define ConioMenuControl(Console, CmdIdLow, CmdIdHigh) \
(Console)->TermIFace.Vtbl->MenuControl((Console), (CmdIdLow), (CmdIdHigh))
#define ConioSetMenuClose(Console, Enable) \
Modified: trunk/reactos/win32ss/user/consrv/console.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/consol…
==============================================================================
--- trunk/reactos/win32ss/user/consrv/console.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/consrv/console.c [iso-8859-1] Sat Jun 1 22:49:50 2013
@@ -617,7 +617,8 @@
Console->LineMaxSize = Console->LineSize = Console->LinePos = 0;
Console->LineComplete = Console->LineUpPressed = Console->LineInsertToggle =
FALSE;
// LineWakeupMask
- // Selection
+ RtlZeroMemory(&Console->Selection, sizeof(CONSOLE_SELECTION_INFO));
+ Console->Selection.dwFlags = CONSOLE_NO_SELECTION;
// dwSelectionCursor
Console->CodePage = GetOEMCP();
@@ -1398,6 +1399,54 @@
return STATUS_SUCCESS;
}
+CSR_API(SrvShowConsoleCursor)
+{
+ NTSTATUS Status;
+ PCONSOLE_SHOWCURSOR ShowCursorRequest =
&((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ShowCursorRequest;
+ PCONSOLE Console;
+ PCONSOLE_SCREEN_BUFFER Buff;
+
+ Status =
ConSrvGetScreenBuffer(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
+ ShowCursorRequest->OutputHandle,
+ &Buff,
+ GENERIC_WRITE,
+ TRUE);
+ if (!NT_SUCCESS(Status)) return Status;
+
+ Console = Buff->Header.Console;
+
+ ShowCursorRequest->RefCount = ConioShowMouseCursor(Console,
ShowCursorRequest->Show);
+
+ ConSrvReleaseScreenBuffer(Buff, TRUE);
+ return STATUS_SUCCESS;
+}
+
+CSR_API(SrvSetConsoleCursor)
+{
+ NTSTATUS Status;
+ BOOL Success;
+ PCONSOLE_SETCURSOR SetCursorRequest =
&((PCONSOLE_API_MESSAGE)ApiMessage)->Data.SetCursorRequest;
+ PCONSOLE Console;
+ PCONSOLE_SCREEN_BUFFER Buff;
+
+ // FIXME: Tests show that this function is used only for graphics screen buffers
+ // and otherwise it returns false + set last error to invalid handle.
+ // NOTE: I find that behaviour is ridiculous but ok, let's accept that at the
moment...
+ Status =
ConSrvGetGraphicsBuffer(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
+ SetCursorRequest->OutputHandle,
+ &Buff,
+ GENERIC_WRITE,
+ TRUE);
+ if (!NT_SUCCESS(Status)) return Status;
+
+ Console = Buff->Header.Console;
+
+ Success = ConioSetMouseCursor(Console, SetCursorRequest->hCursor);
+
+ ConSrvReleaseScreenBuffer(Buff, TRUE);
+ return (Success ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL);
+}
+
CSR_API(SrvConsoleMenuControl)
{
NTSTATUS Status;
Modified: trunk/reactos/win32ss/user/consrv/frontends/gui/guisettings.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/fronte…
==============================================================================
--- trunk/reactos/win32ss/user/consrv/frontends/gui/guisettings.h [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/consrv/frontends/gui/guisettings.h [iso-8859-1] Sat Jun 1
22:49:50 2013
@@ -47,9 +47,12 @@
HWND hWindow; /* Handle to the console's window */
HICON hIcon; /* Handle to the console's icon (big) */
HICON hIconSm; /* Handle to the console's icon (small) */
+
+ HCURSOR hCursor; /* Handle to the mouse cursor */
+ INT MouseCursorRefCount; /* The reference counter associated with the mouse
cursor. >= 0 and the cursor is shown; < 0 and the cursor is hidden. */
BOOL IgnoreNextMouseSignal; /* Used in cases where we don't want to treat a mouse
signal */
- BOOL IsCloseButtonEnabled; /* TRUE if the Close button and the corresponding system
menu item are enabled, FALSE otherwise */
+ BOOL IsCloseButtonEnabled; /* TRUE if the Close button and the corresponding system
menu item are enabled (default), FALSE otherwise */
UINT cmdIdLow ; /* Lowest menu id of the user-reserved menu id range */
UINT cmdIdHigh; /* Highest menu id of the user-reserved menu id range */
Modified: trunk/reactos/win32ss/user/consrv/frontends/gui/guiterm.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/fronte…
==============================================================================
--- trunk/reactos/win32ss/user/consrv/frontends/gui/guiterm.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/consrv/frontends/gui/guiterm.c [iso-8859-1] Sat Jun 1
22:49:50 2013
@@ -276,11 +276,23 @@
case ID_SYSTEM_EDIT_SELECTALL:
{
+ LPWSTR WindowTitle = NULL;
+ SIZE_T Length = 0;
+
Console->Selection.dwSelectionAnchor.X = 0;
Console->Selection.dwSelectionAnchor.Y = 0;
Console->dwSelectionCursor.X = ActiveBuffer->ViewSize.X - 1;
Console->dwSelectionCursor.Y = ActiveBuffer->ViewSize.Y - 1;
+ Console->Selection.dwFlags |= CONSOLE_SELECTION_IN_PROGRESS |
CONSOLE_MOUSE_SELECTION;
GuiConsoleUpdateSelection(Console, &Console->dwSelectionCursor);
+
+ Length = Console->Title.Length + sizeof(L"Selection -
")/sizeof(WCHAR) + 1;
+ WindowTitle = ConsoleAllocHeap(0, Length * sizeof(WCHAR));
+ wcscpy(WindowTitle, L"Selection - ");
+ wcscat(WindowTitle, Console->Title.Buffer);
+ SetWindowText(GuiData->hWindow, WindowTitle);
+ ConsoleFreeHeap(WindowTitle);
+
break;
}
@@ -1636,6 +1648,54 @@
GuiConsoleHandleTimer(GuiData);
break;
+ case WM_SETCURSOR:
+ {
+ /*
+ * The message was sent because we are manually triggering a change.
+ * Check whether the mouse is indeed present on this console window
+ * and take appropriate decisions.
+ */
+ if (wParam == -1 && lParam == -1)
+ {
+ POINT mouseCoords;
+ HWND hWndHit;
+
+ /* Get the placement of the mouse */
+ GetCursorPos(&mouseCoords);
+
+ /* On which window is placed the mouse ? */
+ hWndHit = WindowFromPoint(mouseCoords);
+
+ /* It's our window. Perform the hit-test to be used later on. */
+ if (hWndHit == hWnd)
+ {
+ wParam = (WPARAM)hWnd;
+ lParam = DefWindowProcW(hWndHit, WM_NCHITTEST, 0,
+ MAKELPARAM(mouseCoords.x, mouseCoords.y));
+ }
+ }
+
+ /* Set the mouse cursor only when we are in the client area */
+ if ((HWND)wParam == hWnd && LOWORD(lParam) == HTCLIENT)
+ {
+ if (GuiData->MouseCursorRefCount >= 0)
+ {
+ /* Show the cursor */
+ SetCursor(GuiData->hCursor);
+ }
+ else
+ {
+ /* Hide the cursor if the reference count is negative */
+ SetCursor(NULL);
+ }
+ return TRUE;
+ }
+ else
+ {
+ goto Default;
+ }
+ }
+
case WM_LBUTTONDOWN:
case WM_MBUTTONDOWN:
case WM_RBUTTONDOWN:
@@ -1711,8 +1771,17 @@
HMENU hMenu = (HMENU)wParam;
if (hMenu != NULL)
{
- /* Enables or disables the Close menu item */
- EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND |
(GuiData->IsCloseButtonEnabled ? MF_ENABLED : MF_GRAYED));
+ /* Enable or disable the Close menu item */
+ EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND |
+ (GuiData->IsCloseButtonEnabled ? MF_ENABLED :
MF_GRAYED));
+
+ /* Enable or disable the Copy and Paste items */
+ EnableMenuItem(hMenu, ID_SYSTEM_EDIT_COPY , MF_BYCOMMAND |
+ ((Console->Selection.dwFlags &
CONSOLE_SELECTION_IN_PROGRESS) &&
+ (Console->Selection.dwFlags &
CONSOLE_SELECTION_NOT_EMPTY) ? MF_ENABLED : MF_GRAYED));
+ EnableMenuItem(hMenu, ID_SYSTEM_EDIT_PASTE, MF_BYCOMMAND |
+ (!(Console->Selection.dwFlags &
CONSOLE_SELECTION_IN_PROGRESS) &&
+ IsClipboardFormatAvailable(CF_UNICODETEXT) ? MF_ENABLED :
MF_GRAYED));
}
if (ConSrvValidateConsoleUnsafe(Console, CONSOLE_RUNNING, TRUE))
@@ -2229,6 +2298,9 @@
return FALSE;
}
+static BOOL WINAPI
+GuiSetMouseCursor(PCONSOLE Console, HCURSOR hCursor);
+
static VOID WINAPI
GuiRefreshInternalInfo(PCONSOLE Console)
{
@@ -2236,6 +2308,19 @@
/* Update the console leader information held by the window */
SetConsoleWndConsoleLeaderCID(GuiData);
+
+ /*
+ * HACK:
+ * We reset the cursor here so that, when a console app quits, we reset
+ * the cursor to the default one. It's quite a hack since it doesn't proceed
+ * per - console process... This must be fixed.
+ *
+ * See GuiInitConsole(...) for more information.
+ */
+
+ /* Mouse is shown by default with its default cursor shape */
+ GuiData->MouseCursorRefCount = 0; // Reinitialize the reference counter
+ GuiSetMouseCursor(Console, NULL);
}
static VOID WINAPI
@@ -2370,6 +2455,38 @@
GuiData->GuiInfo.FullScreen = (NewMode & CONSOLE_FULLSCREEN_MODE);
// TODO: Change the display mode
+ return TRUE;
+}
+
+static INT WINAPI
+GuiShowMouseCursor(PCONSOLE Console, BOOL Show)
+{
+ PGUI_CONSOLE_DATA GuiData = Console->TermIFace.Data;
+
+ /* Set the reference count */
+ if (Show) ++GuiData->MouseCursorRefCount;
+ else --GuiData->MouseCursorRefCount;
+
+ /* Effectively show (or hide) the cursor (use special values for (w|l)Param) */
+ PostMessageW(GuiData->hWindow, WM_SETCURSOR, -1, -1);
+
+ return GuiData->MouseCursorRefCount;
+}
+
+static BOOL WINAPI
+GuiSetMouseCursor(PCONSOLE Console, HCURSOR hCursor)
+{
+ PGUI_CONSOLE_DATA GuiData = Console->TermIFace.Data;
+
+ /*
+ * Set the cursor's handle. If the given handle is NULL,
+ * then restore the default cursor.
+ */
+ GuiData->hCursor = (hCursor ? hCursor : ghDefaultCursor);
+
+ /* Effectively modify the shape of the cursor (use special values for (w|l)Param) */
+ PostMessageW(GuiData->hWindow, WM_SETCURSOR, -1, -1);
+
return TRUE;
}
@@ -2420,6 +2537,8 @@
GuiGetLargestConsoleWindowSize,
GuiGetDisplayMode,
GuiSetDisplayMode,
+ GuiShowMouseCursor,
+ GuiSetMouseCursor,
GuiMenuControl,
GuiSetMenuClose,
};
@@ -2544,6 +2663,13 @@
}
}
+ /* Mouse is shown by default with its default cursor shape */
+ GuiData->hCursor = ghDefaultCursor;
+ GuiData->MouseCursorRefCount = 0;
+
+ /* A priori don't ignore mouse signals */
+ GuiData->IgnoreNextMouseSignal = FALSE;
+
/* Close button and the corresponding system menu item are enabled by default */
GuiData->IsCloseButtonEnabled = TRUE;
Modified: trunk/reactos/win32ss/user/consrv/frontends/tui/tuiterm.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/fronte…
==============================================================================
--- trunk/reactos/win32ss/user/consrv/frontends/tui/tuiterm.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/consrv/frontends/tui/tuiterm.c [iso-8859-1] Sat Jun 1
22:49:50 2013
@@ -643,6 +643,18 @@
return TRUE;
}
+static INT WINAPI
+TuiShowMouseCursor(PCONSOLE Console, BOOL Show)
+{
+ return 0;
+}
+
+static BOOL WINAPI
+TuiSetMouseCursor(PCONSOLE Console, HCURSOR hCursor)
+{
+ return TRUE;
+}
+
static HMENU WINAPI
TuiMenuControl(PCONSOLE Console, UINT cmdIdLow, UINT cmdIdHigh)
{
@@ -652,7 +664,7 @@
static BOOL WINAPI
TuiSetMenuClose(PCONSOLE Console, BOOL Enable)
{
- return FALSE;
+ return TRUE;
}
static FRONTEND_VTBL TuiVtbl =
@@ -671,6 +683,8 @@
TuiGetLargestConsoleWindowSize,
TuiGetDisplayMode,
TuiSetDisplayMode,
+ TuiShowMouseCursor,
+ TuiSetMouseCursor,
TuiMenuControl,
TuiSetMenuClose,
};
Modified: trunk/reactos/win32ss/user/consrv/include/conio.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/includ…
==============================================================================
--- trunk/reactos/win32ss/user/consrv/include/conio.h [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/consrv/include/conio.h [iso-8859-1] Sat Jun 1 22:49:50
2013
@@ -218,6 +218,10 @@
ULONG (WINAPI *GetDisplayMode)(struct _CONSOLE* Console);
BOOL (WINAPI *SetDisplayMode)(struct _CONSOLE* Console,
ULONG NewMode);
+ INT (WINAPI *ShowMouseCursor)(struct _CONSOLE* Console,
+ BOOL Show);
+ BOOL (WINAPI *SetMouseCursor)(struct _CONSOLE* Console,
+ HCURSOR hCursor);
HMENU (WINAPI *MenuControl)(struct _CONSOLE* Console,
UINT cmdIdLow,
UINT cmdIdHigh);
Modified: trunk/reactos/win32ss/user/consrv/init.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/init.c…
==============================================================================
--- trunk/reactos/win32ss/user/consrv/init.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/consrv/init.c [iso-8859-1] Sat Jun 1 22:49:50 2013
@@ -72,8 +72,8 @@
SrvCreateConsoleScreenBuffer,
SrvInvalidateBitMapRect,
// SrvVDMConsoleOperation,
- // SrvSetConsoleCursor,
- // SrvShowConsoleCursor,
+ SrvSetConsoleCursor,
+ SrvShowConsoleCursor,
SrvConsoleMenuControl,
// SrvSetConsolePalette,
SrvSetConsoleDisplayMode,
@@ -163,8 +163,8 @@
FALSE, // SrvCreateConsoleScreenBuffer,
FALSE, // SrvInvalidateBitMapRect,
// FALSE, // SrvVDMConsoleOperation,
- // FALSE, // SrvSetConsoleCursor,
- // FALSE, // SrvShowConsoleCursor,
+ FALSE, // SrvSetConsoleCursor,
+ FALSE, // SrvShowConsoleCursor,
FALSE, // SrvConsoleMenuControl,
// FALSE, // SrvSetConsolePalette,
FALSE, // SrvSetConsoleDisplayMode,
@@ -254,8 +254,8 @@
"CreateConsoleScreenBuffer",
"InvalidateBitMapRect",
// "VDMConsoleOperation",
- // "SetConsoleCursor",
- // "ShowConsoleCursor",
+ "SetConsoleCursor",
+ "ShowConsoleCursor",
"ConsoleMenuControl",
// "SetConsolePalette",
"SetConsoleDisplayMode",