Пример #1
0
void SetVideoMode()
{
	if (!IsConsoleFullscreen() && Opt.AltF9)
	{
		ChangeVideoMode(InitSize.X==CurSize.X && InitSize.Y==CurSize.Y);
	}
	else
	{
		ChangeVideoMode(ScrY==24?50:25,80);
	}
}
Пример #2
0
void ChangeVideoMode(int Maximized)
{
	COORD coordScreen;

	if (Maximized)
	{
		SendMessage(Console.GetWindow(),WM_SYSCOMMAND,SC_MAXIMIZE,0);
		coordScreen = Console.GetLargestWindowSize();
		coordScreen.X+=Opt.ScrSize.DeltaX;
		coordScreen.Y+=Opt.ScrSize.DeltaY;
	}
	else
	{
		SendMessage(Console.GetWindow(),WM_SYSCOMMAND,SC_RESTORE,0);
		coordScreen = InitSize;
	}

	ChangeVideoMode(coordScreen.Y,coordScreen.X);
}
Пример #3
0
void InitConsole(int FirstInit)
{
	RegisterConsoleScrollHook();

	InitRecodeOutTable();

	if (FirstInit)
	{
		CancelIoInProgress() = Event(Event::manual, Event::nonsignaled);

		DWORD Mode;
		if(!Console().GetMode(Console().GetInputHandle(), Mode))
		{
			HANDLE ConIn = CreateFile(L"CONIN$", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
			SetStdHandle(STD_INPUT_HANDLE, ConIn);
		}
		if(!Console().GetMode(Console().GetOutputHandle(), Mode))
		{
			HANDLE ConOut = CreateFile(L"CONOUT$", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
			SetStdHandle(STD_OUTPUT_HANDLE, ConOut);
			SetStdHandle(STD_ERROR_HANDLE, ConOut);
		}
	}

	Console().SetControlHandler(CtrlHandler, true);
	Console().GetMode(Console().GetInputHandle(),InitialConsoleMode);
	Global->strInitTitle = Console().GetPhysicalTitle();
	Console().GetWindowRect(InitWindowRect);
	Console().GetSize(InitialSize);
	Console().GetCursorInfo(InitialCursorInfo);

	SetFarConsoleMode();

	/* $ 09.04.2002 DJ
	   если размер консольного буфера больше размера окна, выставим
	   их равными
	*/
	if (FirstInit)
	{
		SMALL_RECT WindowRect;
		Console().GetWindowRect(WindowRect);
		Console().GetSize(InitSize);

		if(Global->Opt->WindowMode)
		{
			Console().ResetPosition();
		}
		else
		{
			if (WindowRect.Left || WindowRect.Top || WindowRect.Right != InitSize.X-1 || WindowRect.Bottom != InitSize.Y-1)
			{
				COORD newSize;
				newSize.X = WindowRect.Right - WindowRect.Left + 1;
				newSize.Y = WindowRect.Bottom - WindowRect.Top + 1;
				Console().SetSize(newSize);
				Console().GetSize(InitSize);
			}
		}
		if (IsZoomed(Console().GetWindow()))
			ChangeVideoMode(1);
	}

	GetVideoMode(CurSize);
	Global->ScrBuf->FillBuf();

	ConsoleIcons().setFarIcons();
}
Пример #4
0
void InitConsole(int FirstInit)
{
	InitRecodeOutTable();

	if (FirstInit)
	{
		DWORD Mode;
		if(!Console.GetMode(Console.GetInputHandle(), Mode))
		{
			HANDLE ConIn = CreateFile(L"CONIN$", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
			SetStdHandle(STD_INPUT_HANDLE, ConIn);
		}
		if(!Console.GetMode(Console.GetOutputHandle(), Mode))
		{
			HANDLE ConOut = CreateFile(L"CONOUT$", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
			SetStdHandle(STD_OUTPUT_HANDLE, ConOut);
			SetStdHandle(STD_ERROR_HANDLE, ConOut);
		}
	}

	Console.SetControlHandler(CtrlHandler,TRUE);
	Console.GetMode(Console.GetInputHandle(),InitialConsoleMode);
	Console.GetTitle(strInitTitle);
	Console.GetWindowRect(InitWindowRect);
	Console.GetSize(InitialSize);
	Console.GetCursorInfo(InitialCursorInfo);

	// размер клавиатурной очереди = 1024 кода клавиши
	if (!KeyQueue)
		KeyQueue=new FarQueue<DWORD>(1024);

	SetFarConsoleMode();

	/* $ 09.04.2002 DJ
	   если размер консольного буфера больше размера окна, выставим
	   их равными
	*/
	if (FirstInit)
	{
		SMALL_RECT WindowRect;
		Console.GetWindowRect(WindowRect);
		GetVideoMode(InitSize);

		if(Opt.WindowMode)
		{
			Console.ResetPosition();
		}
		else
		{
			if (WindowRect.Left || WindowRect.Top || WindowRect.Right != InitSize.X-1 || WindowRect.Bottom != InitSize.Y-1)
			{
				COORD newSize;
				newSize.X = WindowRect.Right - WindowRect.Left + 1;
				newSize.Y = WindowRect.Bottom - WindowRect.Top + 1;
				Console.SetSize(newSize);
				GetVideoMode(InitSize);
			}
		}
		if (IsZoomed(Console.GetWindow()))
			ChangeVideoMode(1);
	}

	GetVideoMode(CurSize);
	ScrBuf.FillBuf();

	ConsoleIcons.setFarIcons();
}
Пример #5
0
void InitConsole(int FirstInit)
{
    InitRecodeOutTable();

    if (FirstInit)
    {
        CancelIoInProgress = std::make_unique<DECLTYPE(CancelIoInProgress)::element_type>();
        CancelIoInProgress->Open(true);

        DWORD Mode;
        if(!Global->Console->GetMode(Global->Console->GetInputHandle(), Mode))
        {
            HANDLE ConIn = CreateFile(L"CONIN$", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
            SetStdHandle(STD_INPUT_HANDLE, ConIn);
        }
        if(!Global->Console->GetMode(Global->Console->GetOutputHandle(), Mode))
        {
            HANDLE ConOut = CreateFile(L"CONOUT$", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
            SetStdHandle(STD_OUTPUT_HANDLE, ConOut);
            SetStdHandle(STD_ERROR_HANDLE, ConOut);
        }
    }

    Global->Console->SetControlHandler(CtrlHandler, true);
    Global->Console->GetMode(Global->Console->GetInputHandle(),InitialConsoleMode);
    Global->Console->GetTitle(Global->strInitTitle);
    Global->Console->GetWindowRect(InitWindowRect);
    Global->Console->GetSize(InitialSize);
    Global->Console->GetCursorInfo(InitialCursorInfo);

    // размер клавиатурной очереди = 1024 кода клавиши
    if (!KeyQueue)
        KeyQueue = std::make_unique<DECLTYPE(KeyQueue)::element_type>();

    SetFarConsoleMode();

    /* $ 09.04.2002 DJ
       если размер консольного буфера больше размера окна, выставим
       их равными
    */
    if (FirstInit)
    {
        SMALL_RECT WindowRect;
        Global->Console->GetWindowRect(WindowRect);
        Global->Console->GetSize(InitSize);

        if(Global->Opt->WindowMode)
        {
            Global->Console->ResetPosition();
        }
        else
        {
            if (WindowRect.Left || WindowRect.Top || WindowRect.Right != InitSize.X-1 || WindowRect.Bottom != InitSize.Y-1)
            {
                COORD newSize;
                newSize.X = WindowRect.Right - WindowRect.Left + 1;
                newSize.Y = WindowRect.Bottom - WindowRect.Top + 1;
                Global->Console->SetSize(newSize);
                Global->Console->GetSize(InitSize);
            }
        }
        if (IsZoomed(Global->Console->GetWindow()))
            ChangeVideoMode(1);
    }

    GetVideoMode(CurSize);
    Global->ScrBuf->FillBuf();

    Global->ConsoleIcons->setFarIcons();
}