【问题标题】:C++: Disabling scrolling in a console application..?C ++:禁用控制台应用程序中的滚动..?
【发布时间】:2012-10-11 06:01:57
【问题描述】:

我创建了一个无边框(和无滚动框)控制台应用程序,但我发现如果用户有一个触摸板并尝试用它滚动控制台,他就可以这样做。 (显然,不能用普通鼠标完成。)

我想禁用此功能。

首先我想为我的控制台创建某种消息处理系统,就像在 Win32 GUI 编程中一样,但这似乎是不必要的困难。

我也考虑过更改缓冲区大小,但我不知道该怎么做(我查看了 SetConsoleScreenBufferSize 但无法用它做任何有用的事情)。

有什么建议吗?

【问题讨论】:

  • 改变缓冲区大小就可以了
  • 您可能会遇到这种情况:指定的尺寸也不能小于系统允许的最小尺寸。此最小值取决于控制台的当前字体大小(由用户选择)以及 GetSystemMetrics 函数返回的 SM_CXMIN 和 SM_CYMIN 值。您很可能必须将它们设置为较低的值才能能够将缓冲区大小设置为窗口大小(意味着无处可滚动)。
  • 好吧,我使用 GetSystemMetrics() 计算出 SM_CXMINSM_CYMIN 然后使用设置缓冲区大小SetConsoleScreenBufferSize(hWnd, bufferSize),其中 bufferSizeCOORD bufferSize = {97, 28} //GetSystemMetrics() 中的值 但没有任何变化.有什么帮助吗?
  • 如果你输出 1-30 的数字,那么 1 和 2 会从顶部消失吗?
  • 我能看到的最后一个数字是 6。

标签: c++ visual-studio winapi console cmd


【解决方案1】:

问题已解决..

我不小心使用了SetConsoleScreenBufferSize(hWnd, dwSize); 而不是SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), dwSize);

编辑:还有一个小错误。 即使我将Console Screen Buffer Size 设置为尽可能小,用户仍然可以向上滚动几步(要向下滚动,用户需要非常快地滚动,出于某种原因)我不知道会发生什么造成这种情况,所以如果您有任何想法请告诉我。

【讨论】:

    猜你喜欢
    • 2014-10-15
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 2018-02-19
    • 2012-06-20
    相关资源
    最近更新 更多