1

Windows プラットフォームでは、別のウィンドウに切り替えると、ブラウザは WM_ACTIVATE メッセージを受け取ります。WM_ACTIVATE メッセージをプラグインに渡す方法はありますか? NPP_HandleEvent を試してみましたが、まったく機能しないようです。

4

1 に答える 1

2

WindowsNPP_HandleEvent()の場合、ウィンドウのないプラグインにのみ使用され、デフォルトでウィンドウが表示されます。したがって、ウィンドウレスを明示的にオプトインしない限り、それがNPP_HandleEvent()呼び出されない理由になります。

ウィンドウプラグインの場合、ウィンドウメッセージを受信するには、プラグインウィンドウをサブクラス化する必要があります(たとえばSubclass()、Mozillaのテストプラグインソースを参照してください)。

ウィンドウレスプラグイン(推奨されるはずです)の場合、プラグインにWM_ACTIVATE配信されません
実際に処理するWM_ACTIVATE必要がありますか、それともプラグインがいつ表示/フォーカスされているかを知る必要がありますか?これは、0サイズのクリップrectsNPP_SetWindow()とフォーカスイベントをチェックすることで判断できます。
ウィンドウのアクティブ化について本当に知る必要がある場合(なぜですか?)、私が考えることができる次善の策はfocus、ウィンドウでDOMイベントをリッスンすることです。

于 2013-02-16T08:16:30.430 に答える