Сопоставить размер буфера с размером окна ⇐ C#
-
Гость
Сопоставить размер буфера с размером окна
Этот код делает окно консоли без полей и полноразмерным:
public static Coord InitializeConsole(nint consoleHandle, nint stdOutput, int fontWidth, int fontHeight, ColorPalette colorPalette) { вар consoleRect = новый RECT(); GetWindowRect (consoleHandle, ссылка consoleRect); вар DesktopWidth = GetSystemMetrics (0); вар DesktopHeight = GetSystemMetrics (1); _ = SetWindowLong(consoleHandle, -16, 0x00080000); вар csbe = новый CONSOLE_SCREEN_BUFFER_INFO_EX(); csbe.cbSize = Marshal.SizeOf(csbe); GetConsoleScreenBufferInfoEx (stdOutput, ref csbe); SetColorPalette (stdOutput, colorPalette, ref csbe); csbe.dwSize.X = (короткий)(desktopWidth/fontWidth); csbe.dwSize.Y = (короткий)(desktopHeight/fontHeight); ++csbe.srWindow.Bottom; ++csbe.srWindow.Right; SetConsoleScreenBufferInfoEx (stdOutput, ref csbe); УстановитьWindowPos( консольHandle, нинт.Ноль, 0, 0, ширина окна, окноВысота, 0x0040); DrawMenuBar (consoleHandle); GetConsoleScreenBufferInfoEx (stdOutput, ref csbe); return new(csbe.dwSize.X, csbe.dwSize.Y); } Моя проблема в том, что при некоторых высотах шрифта буфер консоли слишком велик для окна консоли и появляется полоса прокрутки.
Как установить размер буфера, чтобы полоса прокрутки никогда не появлялась?
Этот код делает окно консоли без полей и полноразмерным:
public static Coord InitializeConsole(nint consoleHandle, nint stdOutput, int fontWidth, int fontHeight, ColorPalette colorPalette) { вар consoleRect = новый RECT(); GetWindowRect (consoleHandle, ссылка consoleRect); вар DesktopWidth = GetSystemMetrics (0); вар DesktopHeight = GetSystemMetrics (1); _ = SetWindowLong(consoleHandle, -16, 0x00080000); вар csbe = новый CONSOLE_SCREEN_BUFFER_INFO_EX(); csbe.cbSize = Marshal.SizeOf(csbe); GetConsoleScreenBufferInfoEx (stdOutput, ref csbe); SetColorPalette (stdOutput, colorPalette, ref csbe); csbe.dwSize.X = (короткий)(desktopWidth/fontWidth); csbe.dwSize.Y = (короткий)(desktopHeight/fontHeight); ++csbe.srWindow.Bottom; ++csbe.srWindow.Right; SetConsoleScreenBufferInfoEx (stdOutput, ref csbe); УстановитьWindowPos( консольHandle, нинт.Ноль, 0, 0, ширина окна, окноВысота, 0x0040); DrawMenuBar (consoleHandle); GetConsoleScreenBufferInfoEx (stdOutput, ref csbe); return new(csbe.dwSize.X, csbe.dwSize.Y); } Моя проблема в том, что при некоторых высотах шрифта буфер консоли слишком велик для окна консоли и появляется полоса прокрутки.
Как установить размер буфера, чтобы полоса прокрутки никогда не появлялась?
Мобильная версия