奇怪的SetConsoleScreenBufferInfoEx行为

时间:2014-08-12 21:05:43

标签: c# .net winapi pinvoke dllimport

如果我创建一个C#控制台应用程序,它将控制台缓冲区/窗口宽度和高度(使用Console。* - 方法)设置为80x25(或任何其他特定大小),则控制台窗口没有滚动条。

当我使用GetConsoleScreenBufferInfoEx读取consolebuffer-settings时,它会报告一个window.Right和window.Bottom为79x24。如果我写回读CONSOLE_SCREEN_BUFFER_INFO_EX,那么窗口将会出现滚动条。

问题:是否有任何C#/ .NET框架方法干扰或是否属于此标准行为?

我在互联网上看过C的examplecode,它总是在做窗口。右边的++和window.Bottom ++。

1 个答案:

答案 0 :(得分:0)

对于第一个问题,我认为您正在使用滚动条,因为您的窗口实际上正在变小。这是一个错误。

请参见35901572和说明,以供您参考examples on PInvoke 始终固定大小。

在调用GetConsoleScreenBufferInfoEx之后尝试添加几行:

GetConsoleScreenBufferInfoEx(handle, ref currentScreen);
++currentScreen.srWindowBottom;
++currentScreen.srWindowRight;