按住滚动条获取命令提示符以在Windows中暂停

The*_*ist 5 c++ windows hardware command-prompt

我有一个程序,可以通过National Instruments(NI)的ADC系统记录数据。

设备缓冲信息一段时间,然后程序在某个点收集缓冲数据。如果程序收集的数据大于缓冲区,那么在我的程序未接收到数据的情况下,缓冲区将必须释放,这将导致NI库抛出异常,说明所请求的数据已丢失,因此不再可用。

由于我的程序是命令提示符程序,因此如果用户单击并按住滚动条,程序将暂停,这可能会导致此问题发生。

如何在不增加缓冲区大小的情况下克服此问题?我可以在Windows中禁用此功能吗?

谢谢。

Dea*_*pog 2

首先使用GetConsoleWindow winapi 函数并获取控制台的 HWND。现在我建议两种方法来做到这一点,

方法 I 通过创建您自己的 WindowProcedure 对窗口进行子类化。(从这里获取帮助)现在您已经对其进行了子类化,您可以拦截WM_VSCROLL和 WM_HSCROLL 消息并对您的代码进行自己的补救措施。

方法二使用SetWindowPos 等函数更改窗口的大小,这样就不需要滚动条了。或者更改控制台屏幕缓冲区的大小,以便不需要滚动条。

方法一对应用程序有很多控制,但它比方法二稍微复杂一点,方法二非常简单。如果您想禁止用户调整控制台窗口的大小,只需WS_THICKFRAME从控制台窗口的WindowStyle中删除 即可。