这很可能是另一个愚蠢的问题,但我似乎无法找到答案(或任何相关问题),所以这里就是。
我有一个命令行程序,它在Linux上使用SIGWINCH来检测窗口大小的变化,我显然有一个用户在Windows上使用该程序。问题是,程序使用SIGWINCH来检测窗口大小的变化,并且Windows上不支持此信号。我已经尝试过谷歌搜索我能想到的每一个搜索词组合,但由于SIGWINCH与窗口大小的变化之间的关系,我很难找到任何有用的结果。我正在寻找Windows等价物,或者最常用于检测Windows计算机上窗口大小变化的方法。
如何在Windows上检测窗口大小的变化?
答案 0 :(得分:2)
由于我认为您不能对控制台窗口进行子类化(从而捕获WM_SIZE
消息),您可能只需要轮询GetConsoleScreenBufferInfo
。
编辑:经过进一步调查(未经过测试!),如果不使用ReadConsoleInput
进行投票,也可能无法进行调查。摘要:调用SetConsoleMode
打开窗口输入事件。在其他线程中,等待console input handle使用WaitForSingleObject
或类似功能发出信号。读取所有挂起的控制台事件窗口缓冲区大小事件的存在意味着调整了控制台窗口的大小。