7

这很可能是另一个愚蠢的问题,但我似乎找不到答案(或任何与此相关的答案),所以就这样吧。

我有一个命令行程序,它在 Linux 上使用 SIGWINCH 来检测窗口大小的变化,我显然有一个在 Windows 上使用该程序的用户。问题在于程序使用 SIGWINCH 来检测窗口大小的变化,而 Windows 不支持此信号。我已经尝试用谷歌搜索我能想到的每种搜索词组合,但由于 SIGWINCH 和窗口大小变化之间的关系,我很难找到任何有用的结果。我正在寻找 Windows 等效项,或者最常用于检测 Windows 计算机上窗口大小变化的方法。

如何检测 Windows 上窗口大小的变化?

4

1 回答 1

4

由于我认为您不能子类化控制台窗口(从而捕获WM_SIZE消息),因此您可能只需要 poll GetConsoleScreenBufferInfo

编辑:经过进一步调查(未经测试!),不使用ReadConsoleInput. 摘要:调用SetConsoleMode开启窗口输入事件。从不同的线程,等待控制台输入句柄使用WaitForSingleObject或类似函数发出信号。读取所有待处理的控制台事件;窗口缓冲区大小事件的存在意味着调整了控制台窗口的大小。

于 2012-06-01T21:06:42.037 回答