2012-06-01 47 views
3

這很可能是另一個愚蠢的問題,但我似乎無法找到答案(或任何關於此事的問題),所以在這裏。在Windows上的SIGWINCH等價物?

我有一個命令行程序,它使用Linux上的SIGWINCH來檢測窗口大小的變化,而且我顯然有一個在Windows上使用該程序的用戶。問題在於程序使用SIGWINCH來檢測窗口大小的變化,並且該信號在Windows上不受支持。我試過Google搜索詞的每個組合都可以想到,但由於SIGWINCH和窗口大小的變化之間的關係,我很難找到任何有用的結果。我正在尋找Windows的等價物,或者最常用於檢測Windows計算機上窗口大小變化的方法。

如何檢測Windows上窗口大小的變化?

回答

2

由於我不認爲你可以繼承控制檯窗口(因此捕獲WM_SIZE消息),你可能只需輪詢GetConsoleScreenBufferInfo

編輯:經過進一步調查(未經測試!),它可能也是可行的,沒有使用ReadConsoleInput輪詢。總結:致電SetConsoleMode打開窗口輸入事件。從不同的線程,使用WaitForSingleObject或類似的函數等待console input handle變成信號。閱讀所有掛起的控制檯事件窗口緩衝區大小事件的存在意味着調整了控制檯窗口的大小。