0
A
回答
2
我没有,我可以给你举个例子,但我可以大致告诉你需要做什么。
首先,请阅读本:http://colonelpanic.net/2010/11/firebreath-tips-drawing-on-windows/
这会给你如何画FireBreath作品的概述。
首先,您在处理AttachedEvent时设置了所有内容。
- 创建一个新的线程来处理图形(你的DirectX绘图绝不能在主线程)
- 从PluginWindowWin对象获取HWND(投的FB :: PluginWindow *到FB :: PluginWindowWin和呼叫getHWND())
- 使用提供的HWND在辅助线程上初始化DirectX。设置某种形式的渲染循环,并确保可以从主线程发送命令。
- 处理RefreshEvent(来自WM_PAINT)通过发送消息到渲染线程,以便在触发该事件时重绘。
- 确保在DetachedEvent上关闭了你的线程。
您需要在同一线程上执行DirectX东西的所有初始化,绘图和关闭操作。这需要全部发生在不仅仅是主线程的线程上(不要只使用定时器),否则它会在某些版本的Firefox上搞乱浏览器渲染上下文 - 不知道为什么。
无论如何,希望这有助于。
编辑:将参数传递到一个boost :: thread的开始,应该说是你决定使用线程抽象,简单地把它作为一个参数。
boost::thread t(&MyClass::someFunction, this, theHWND);
这将启动线程。实际上,你可能想让线程变成一个类变量或其他东西,以便以后可以访问它 - 记住你希望线程在处理DetachedEvent时停止。对于消息我可能会使用FB :: SafeQueue,它是FireBreath的一部分,是一个线程安全队列。看看如何使用它的来源;这非常简单(我认为从代码项目文章中被盗)。
// Inside MyClass
void someFunction(HWND theHWND) {
...
}
相关问题
- 1. 浏览器插件?
- 2. 基于java的浏览器中的浏览器插件
- 3. NPAPI浏览器插件
- 4. TWAIN浏览器插件
- 5. 谷歌浏览器插件
- 6. 浏览器插件开发
- 7. 浏览器JSON插件
- 8. 跨浏览器插件
- 9. Android浏览器插件
- 10. 插件Android浏览器
- 11. Android浏览器插件
- 12. 浏览器检测插件?
- 13. 浏览器插件检测
- 14. Web浏览器控件
- 15. Silverlight浏览器控件
- 16. web浏览器控件
- 17. Web浏览器控件
- 18. 在qt浏览器插件中的IPC
- 19. 在vb“网页浏览器控件”中打开Chrome浏览器
- 20. 如何在浏览器中使用网页浏览器控件?
- 21. 的JavaScript:跨浏览器的“浏览器插件”检测
- 22. Java插件在浏览器中
- 23. 在c#中编写浏览器插件#
- 24. 在浏览器插件中打开pdf
- 25. 在QT中编写浏览器插件
- 26. Winform浏览器控件“附件”按钮
- 27. 在网页浏览器控件中查找控件的位置
- 28. Eclipse插件。浏览器编辑器
- 29. 浏览器插件w3c验证器?
- 30. 在wpf网络浏览器控件中浏览安全网页
10x!这有助于。你能提供一个简单图片的例子吗? – gln 2011-05-25 06:51:58
你的意思是使用Boost ::线程吗?我如何通过HWND作为参数?我必须创建一个包装类吗? – gln 2011-05-25 10:46:01
你可以使用任何你想要的线程抽象。你不需要boost :: thread的包装类。学习如何正确使用boost :: thread实际上超出了这个问题的范围。有很多例子可用。我已经更新了我的答案,以包含一个粗略的例子。我没有任何*我可以给你的例子,但是如果你做了一些功课并尝试一些应该让你去做的事情。 – taxilian 2011-05-26 05:35:51