Windows プラットフォームでは、別のウィンドウに切り替えると、ブラウザは WM_ACTIVATE メッセージを受け取ります。WM_ACTIVATE メッセージをプラグインに渡す方法はありますか? NPP_HandleEvent を試してみましたが、まったく機能しないようです。
1 に答える
2
WindowsNPP_HandleEvent()
の場合、ウィンドウのないプラグインにのみ使用され、デフォルトでウィンドウが表示されます。したがって、ウィンドウレスを明示的にオプトインしない限り、それがNPP_HandleEvent()
呼び出されない理由になります。
ウィンドウプラグインの場合、ウィンドウメッセージを受信するには、プラグインウィンドウをサブクラス化する必要があります(たとえばSubclass()
、Mozillaのテストプラグインソースを参照してください)。
ウィンドウレスプラグイン(推奨されるはずです)の場合、プラグインにWM_ACTIVATE
は配信されません。
実際に処理するWM_ACTIVATE
必要がありますか、それともプラグインがいつ表示/フォーカスされているかを知る必要がありますか?これは、0サイズのクリップrectsNPP_SetWindow()
とフォーカスイベントをチェックすることで判断できます。
ウィンドウのアクティブ化について本当に知る必要がある場合(なぜですか?)、私が考えることができる次善の策はfocus
、ウィンドウでDOMイベントをリッスンすることです。
于 2013-02-16T08:16:30.430 に答える