コード例 #1
0
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;
}
コード例 #2
0
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;
}
コード例 #3
0
ファイル: console.cpp プロジェクト: FarGroup/FarManager
	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;
	}
コード例 #4
0
ファイル: console.cpp プロジェクト: FarGroup/FarManager
	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;
	}
コード例 #5
0
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;
}
コード例 #6
0
ファイル: console.cpp プロジェクト: FarGroup/FarManager
	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;
	}