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. 包控制 - 在瀏覽器中運行文件的插件
- 3. 基於java的瀏覽器中的瀏覽器插件
- 4. 瀏覽器插件開發
- 5. Android瀏覽器插件
- 6. 插件Android瀏覽器
- 7. 跨瀏覽器插件
- 8. 瀏覽器JSON插件
- 9. 瀏覽器檢測插件?
- 10. 瀏覽器插件檢測
- 11. Javascript瀏覽器插件IsEnabled?
- 12. NPAPI瀏覽器插件
- 13. 谷歌瀏覽器插件
- 14. Android瀏覽器插件
- 15. Wacom Web瀏覽器插件?
- 16. 瀏覽器插件開發
- 17. TWAIN瀏覽器插件
- 18. Silverlight瀏覽器控件
- 19. web瀏覽器控件
- 20. VB.NET Web瀏覽器控件
- 21. C#Web瀏覽器控件
- 22. WebGL IE瀏覽器控件
- 23. Web瀏覽器控件
- 24. Web瀏覽器控件
- 25. 在qt瀏覽器插件中的IPC
- 26. Visual Studio中的FireFox瀏覽器控件
- 27. 如何在瀏覽器中使用網頁瀏覽器控件?
- 28. 在vb「網頁瀏覽器控件」中打開Chrome瀏覽器
- 29. 的JavaScript:跨瀏覽器的「瀏覽器插件」檢測
- 30. 在瀏覽器插件中打開pdf
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