我必须在浏览器的 firebreath 插件中插入一个 directx 控件。任何人都可以发布示例如何做到这一点?我对插件一无所知...
10倍
我必须在浏览器的 firebreath 插件中插入一个 directx 控件。任何人都可以发布示例如何做到这一点?我对插件一无所知...
10倍
我没有可以给你的例子,但我可以大致告诉你你需要做什么。
首先,请阅读:http ://colonelpanic.net/2010/11/firebreath-tips-drawing-on-windows/
这将使您大致了解 FireBreath 中的绘图工作原理。
首先,在处理 AttachedEvent 时设置所有内容。
您需要在同一个线程上执行 DirectX 的所有初始化、绘制和关闭操作。这一切都需要发生在一个不仅仅是主线程的线程上(不要只使用计时器),否则它会在某些版本的 Firefox 上搞乱浏览器渲染上下文——不知道为什么。
无论如何,希望这会有所帮助。
编辑:要将参数传递到 boost::thread 的开头,如果那是您决定使用的线程抽象,只需将其作为参数传递。
boost::thread t(&MyClass::someFunction, this, theHWND);
这将启动线程。实际上,您可能希望使线程成为类变量或其他东西,以便以后可以访问它——请记住,您希望线程在处理 DetachedEvent 期间停止。对于消息,我可能会使用 FB::SafeQueue,它是 FireBreath 的一部分的线程安全队列。查看如何使用它的来源;它非常简单(我认为是从代码项目文章中窃取的)。
// Inside MyClass
void someFunction(HWND theHWND) {
...
}