virtual bool PeekInput(INPUT_RECORD* Buffer, size_t Length, size_t& NumberOfEventsRead) const override { DWORD dwNumberOfEventsRead = 0; #ifdef DEBUG_PEEK_INPUT //Maximus: для отладки //_ASSERTE(Length==1); bool Result=PeekConsoleInput(GetInputHandle(), gPeek, (DWORD)min(Length,ARRAYSIZE(gPeek)), &dwNumberOfEventsRead)!=FALSE; if (Result && dwNumberOfEventsRead) { memmove(Buffer, gPeek, dwNumberOfEventsRead*sizeof(*gPeek)); if (gPeek->EventType == MOUSE_EVENT) gnLastPeekButtons = gPeek->Event.MouseEvent.dwButtonState; } #else bool Result=PeekConsoleInput(GetInputHandle(), Buffer, static_cast<DWORD>(Length), &dwNumberOfEventsRead)!=FALSE; #endif NumberOfEventsRead = dwNumberOfEventsRead; if(Global->Opt->WindowMode && Buffer->EventType==MOUSE_EVENT) { Buffer->Event.MouseEvent.dwMousePosition.Y=std::max(0, Buffer->Event.MouseEvent.dwMousePosition.Y-GetDelta()); COORD Size={}; GetSize(Size); Buffer->Event.MouseEvent.dwMousePosition.X=std::min(Buffer->Event.MouseEvent.dwMousePosition.X, static_cast<SHORT>(Size.X-1)); } return Result; }
virtual bool WriteInput(INPUT_RECORD* Buffer, size_t Length, size_t& NumberOfEventsWritten) const override { if(Global->Opt->WindowMode && Buffer->EventType==MOUSE_EVENT) { Buffer->Event.MouseEvent.dwMousePosition.Y+=GetDelta(); } DWORD dwNumberOfEventsWritten = 0; bool Result = WriteConsoleInput(GetInputHandle(), Buffer, static_cast<DWORD>(Length), &dwNumberOfEventsWritten)!=FALSE; NumberOfEventsWritten = dwNumberOfEventsWritten; return Result; }
bool console::PeekInput(INPUT_RECORD* Buffer, size_t Length, size_t& NumberOfEventsRead) const { DWORD dwNumberOfEventsRead = 0; bool Result = PeekConsoleInput(GetInputHandle(), Buffer, static_cast<DWORD>(Length), &dwNumberOfEventsRead) != FALSE; NumberOfEventsRead = dwNumberOfEventsRead; if (sWindowMode) { COORD Size = {}; GetSize(Size); AdjustMouseEvents(Buffer, NumberOfEventsRead, GetDelta(), Size.X - 1); } return Result; }
bool console::ReadInput(INPUT_RECORD* Buffer, size_t Length, size_t& NumberOfEventsRead) const { DWORD dwNumberOfEventsRead = 0; if (!ReadConsoleInput(GetInputHandle(), Buffer, static_cast<DWORD>(Length), &dwNumberOfEventsRead)) return false; NumberOfEventsRead = dwNumberOfEventsRead; if (sWindowMode) { COORD Size = {}; GetSize(Size); AdjustMouseEvents(Buffer, NumberOfEventsRead, GetDelta(), Size.X - 1); } return true; }
virtual bool ReadInput(INPUT_RECORD* Buffer, size_t Length, size_t& NumberOfEventsRead) const override { DWORD dwNumberOfEventsRead = 0; bool Result=ReadConsoleInput(GetInputHandle(), Buffer, static_cast<DWORD>(Length), &dwNumberOfEventsRead)!=FALSE; if (Result) { NumberOfEventsRead = dwNumberOfEventsRead; if (Global->Opt->WindowMode && Buffer->EventType == MOUSE_EVENT) { Buffer->Event.MouseEvent.dwMousePosition.Y=std::max(0, Buffer->Event.MouseEvent.dwMousePosition.Y-GetDelta()); COORD Size={}; GetSize(Size); Buffer->Event.MouseEvent.dwMousePosition.X=std::min(Buffer->Event.MouseEvent.dwMousePosition.X, static_cast<SHORT>(Size.X-1)); } } return Result; }
bool console::WriteInput(INPUT_RECORD* Buffer, size_t Length, size_t& NumberOfEventsWritten) const { if (sWindowMode) { const auto Delta = GetDelta(); for (auto& i : span(Buffer, Length)) { if (i.EventType == MOUSE_EVENT) { i.Event.MouseEvent.dwMousePosition.Y += Delta; } } } DWORD dwNumberOfEventsWritten = 0; bool Result = WriteConsoleInput(GetInputHandle(), Buffer, static_cast<DWORD>(Length), &dwNumberOfEventsWritten) != FALSE; NumberOfEventsWritten = dwNumberOfEventsWritten; return Result; }