这很可能是另一个愚蠢的问题,但我似乎找不到答案(或任何与此相关的答案),所以这里开始吧。
我有一个在 Linux 上使用 SIGWINCH 来检测窗口大小变化的命令行程序,显然我有一个用户在 Windows 上使用该程序。问题是该程序使用 SIGWINCH 来检测窗口大小的变化,而 Windows 不支持此信号。我已经尝试使用谷歌搜索我能想到的每种搜索词组合,但由于 SIGWINCH 与窗口大小变化之间的关系,我无法找到任何有用的结果。我正在寻找 Windows 等效方法,或者最常用于检测 Windows 计算机上窗口大小变化的方法。
如何检测 Windows 上窗口大小的变化?
最佳答案
因为我认为您不能子类化控制台窗口(因此捕获 WM_SIZE
消息),您可能只需要轮询 GetConsoleScreenBufferInfo
.
编辑:经进一步调查(未测试!),无需使用 ReadConsoleInput
进行轮询也可能可行.总结:调用SetConsoleMode
打开窗口输入事件。从另一个线程,等待 console input handle使用 WaitForSingleObject
或类似函数发出信号。读取所有未决的控制台事件;窗口缓冲区大小事件的存在意味着调整了控制台窗口的大小。
关于windows - Windows 上的 SIGWINCH 等效项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10856926/