C++ 为什么我的隐藏控制台滚动条的功能随机停止工作?
我基于一个函数,该函数是作为对另一个查询()的回答提供的,当我最初使用它时,它工作得很好,但是现在它已经停止工作了 我已经把另一个人的解决方案复制到我的解决方案中,但这也不起作用 这是我在main函数中复制的代码,尝试尽可能地对其进行精简,但仍然不起作用:C++ 为什么我的隐藏控制台滚动条的功能随机停止工作?,c++,winapi,C++,Winapi,我基于一个函数,该函数是作为对另一个查询()的回答提供的,当我最初使用它时,它工作得很好,但是现在它已经停止工作了 我已经把另一个人的解决方案复制到我的解决方案中,但这也不起作用 这是我在main函数中复制的代码,尝试尽可能地对其进行精简,但仍然不起作用: int main() { HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_SCREEN_BUFFER_INFO screenBuffer;
int main() {
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO screenBuffer;
GetConsoleScreenBufferInfo(hStdOut, &screenBuffer);
screenBuffer.dwSize.X = screenBuffer.dwMaximumWindowSize.X;
screenBuffer.dwSize.Y = screenBuffer.dwMaximumWindowSize.Y;
SetConsoleScreenBufferSize(hStdOut, screenBuffer.dwSize);
HWND window = GetConsoleWindow();
ShowScrollBar(window, SB_BOTH, FALSE);
getchar();
return 0;
}
编辑-我认为
ShowScrollBar
功能有缺陷,因为它在有或没有以下内容的情况下间歇性工作
在调用ShowScrollBar
之前更新窗口似乎已经解决了问题
int main() {
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO screenBuffer;
GetConsoleScreenBufferInfo(hStdOut, &screenBuffer);
screenBuffer.dwSize.X = screenBuffer.dwMaximumWindowSize.X;
screenBuffer.dwSize.Y = screenBuffer.dwMaximumWindowSize.Y;
SetConsoleScreenBufferSize(hStdOut, screenBuffer.dwSize);
HWND window = GetConsoleWindow();
UpdateWindow(window);
ShowScrollBar(window, SB_BOTH, FALSE);
getchar();
return 0;
}
执行
SetConsoleScreenBufferSize
功能时,控制台有时不会立即调整大小(调整控制台大小需要一段时间),因此ShowScrollBar
隐藏了控制台,而控制台的大小没有调整
调整控制台大小后,滚动条将重新出现。无论您如何隐藏滚动条,当您调整控制台大小或滚动鼠标滚轮时,滚动条将重新出现
因此,您只需在showcollbar
之前添加延迟并等待控制台调整大小
e、 p
捕获
ShowScrollBar
的返回值。如果返回值为false,请运行以查看错误代码。该死,它是true@askman嗨,对你有用吗?
...
SetConsoleScreenBufferSize(hStdOut, screenBuffer.dwSize);
Sleep(10);
HWND window = GetConsoleWindow();
ShowScrollBar(window, SB_BOTH, FALSE);