7

これは別のばかげた質問かもしれませんが、私は答え(またはそのことについては何か)を見つけることができないようですので、ここに行きます。

LinuxでSIGWINCHを使用してウィンドウサイズの変更を検出するコマンドラインプログラムがあり、Windowsでプログラムを使用しているユーザーがいるようです。問題は、プログラムがSIGWINCHを使用してウィンドウサイズの変更を検出し、このシグナルがWindowsでサポートされていないことです。考えられる検索用語のすべての組み合わせに対してグーグルを試しましたが、SIGWINCHとウィンドウのサイズの変化との関係により、有用な結果を見つけるのに苦労しています。私は、Windowsに相当するもの、またはWindowsコンピューターのウィンドウサイズの変化を検出するために最もよく使用される方法を探しています。

Windowsでウィンドウサイズの変化をどのように検出しますか?

4

1 に答える 1

4

WM_SIZEコンソールウィンドウをサブクラス化する(したがってメッセージをキャッチする)ことはできないと思うので、ポーリングする必要があるかもしれませんGetConsoleScreenBufferInfo

編集:さらに調査すると(テストされていません!)、を使用してポーリングしなくても実行できる可能性がありますReadConsoleInput。概要:SetConsoleModeウィンドウ入力イベントをオンにするために呼び出します。別のスレッドから、または同様の関数を使用してコンソール入力ハンドルが通知されるのを待ちます。WaitForSingleObject保留中のすべてのコンソールイベントを読み取ります。ウィンドウバッファサイズイベントの存在は、コンソールウィンドウのサイズが変更されたことを意味します。

于 2012-06-01T21:06:42.037 に答える