0

WM_SIZEのようなウィンドウのイベントを処理するための関数コールバックがあります。では、開いているウィンドウに関数コールバックを渡す方法は?(コマンドラインアプリケーション用です)。

RegisterClassExを見たことがありますが、新しいウィンドウの作成に使用されていると思います。

4

1 に答える 1

0

既存のウィンドウのウィンドウメッセージを処理する場合は、いくつかのオプションがあります。

サブクラス化。各ウィンドウには「windowproc」コールバック関数(参照している)があり、を使用SetWindowLongPtrして置き換えることができますGWLP_WNDPROC。次に、独自のウィンドウプロシージャで、置き換えた元のメッセージにメッセージを転送する必要があります。ただし、いくつかの制限があります。

  1. ウィンドウのサブクラスを安全に解除することはできません。
  2. これは、独自のプロセス内でのみ実行できます。

Windowsフック、を使用しSetWindowsHookExます。他のウィンドウのメッセージを確認する場合は、これを使用します。特定のスレッドまたはシステム全体のウィンドウのすべてのメッセージを表示できます。さまざまな種類のメッセージをキャッチできるさまざまな種類のフックがあります。これはかなり重いアプローチです。最後の手段であるため、システムを不必要に停止させることはありません。

于 2012-09-12T09:18:08.830 に答える