我正在使用firebreath开发NPAPI插件。我正在使用第三方dll集成到游戏设备。设备上的输入通过在打开到设备的通道时注册的仅消息窗口(HWND)传播到插件。
最初,与设备驱动程序握手, 握手(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 ++编程方面经验不足。我相信我错过了一些基本的东西。
答案 0 :(得分:1)
你想要的是使用WinMessageWindow:
https://github.com/firebreath/FireBreath/blob/master/src/PluginCore/Win/WinMessageWindow.h
你不想使用PluginWindowWin;这对其他事情来说太具体了。 WinMessageWindow专门用于执行您尝试执行的操作类型,它允许您在包含类上创建winproc处理程序。
我最近发布了an example of using WinMessageWindow以接收WM_DEVICENOTIFY消息;我相信你可以用它作为课程如何帮助你入门的一个例子。