firebreath を使用して NPAPI プラグインを開発しています。サード パーティの dll を使用してゲーム デバイスに統合しています。デバイスの入力は、デバイスへのチャネルを開くときに登録されたメッセージのみのウィンドウ (HWND) を介してプラグインに伝達されます。
最初に、デバイス ドライバーとのハンドシェイク、handshake(HWND,...) が行われ、その後、ユーザーの入力時に CustomWinProc() でコールバックが行われ、通知されます。
私は次のことをしました、
- WIN-CustomCallbackHandler.h の下に Header&CPP ファイルを作成し、
#include "Win\PluginWindowWin.h"
#include "Win\WindowContextWin.h"
class CustomCallbackHandler : public FB::PluginWindowWin
{
public:
CustomCallbackHandler (const FB::WindowContextWin& ctx);
protected:
virtual bool CustomWinProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM
lParamm,LRESULT & lRes);
};
-CustomCallbackHandler.cpp
[code]
#include "CustomCallbackHandler.h"
#include "PluginWindowForwardDecl.h"
#include "Win\WindowContextWin.h"
#include "Win\PluginWindowWin.h"
CustomCallbackHandler::CustomCallbackHandler(const FB::WindowContextWin& ctx) :
FB::PluginWindowWin(ctx){
}
bool CustomCallbackHandler::CustomWinProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM
lParamm,LRESULT & lRes){
//if WPARAM is something some operation has to be performed.
return false;
}
[/code]
- Factory.cpp - PluginWindowWin をオーバーライドする次のメソッドを追加
FB::PluginWindowWin* createPluginWindowWin(const FB::WindowContextWin& ctx)
{
return new CustomCallbackHandler(ctx);
}
-MyFirstPluginAPI.cpp-(自動生成された JSAPIAuto サブクラス)- JS メソッド。
bool MyFirstPluginAPI::handshake(FB::JSObjectPtr &callback)
{
FB::WinMessageWindow window;
thirdpartymethod(window.getHWND());
}
ここで、デバッグすると、通常のプラグイン イベントに対して customcallbackhandler が数回呼び出されるのを見ることができましたが、デバイスによって生成されたイベントは利用できません。メッセージ ウィンドウの別のインスタンスが dll に渡されたと思います。
-PluginWindowWin のハンドルを取得するにはどうすればよいですか?
-CustomCallbackHandler でコールバックを受信したら、カスタム sendEvent() を生成するにはどうすればよいですか?
あなたの助けは非常に高く評価されています。
私は Java 開発者ですが、C++ プログラミングの経験はあまりありません。私は根本的な何かが欠けていると信じています。