2017-06-29 36 views
0

我們的應用程序基於wxWidgets,專爲兩臺顯示器而設計。每個顯示器都有一個wxAuiNotebook,它們又有一個我們要渲染的wxGLCanvas。如何在兩個不同的筆記本中交換兩個wxWindows?

我想要一個熱鍵來切換兩個wxGLCanvas窗口,所以用戶的體驗是,監視器#2上的畫布現在正在渲染到#1,反之亦然。 (畫布周圍有一堆工具欄和小部件,但我不希望它們切換顯示器。)

wxGLCanvas是wxWindow的子類,所以我猜測它可能發生在關卡中。我應該注意哪些函數調用來完成此操作?

對不起我的問題含糊不清。它與我對wxWidgets的理解水平一致。

+0

所以你想只有GL畫布交換或筆記本以及? – Igor

+0

@Igor,只需GL畫布 – buttonsrtoys

+2

即可嘗試呼叫Reparent()。檢查文檔是否可用於GLCanvas。無論如何,如果你在這些筆記本上有工具欄和菜單,你也可能需要它們切換。此外,由於2臺顯示器可能具有不同的分辨率,特別是在GTK上,可能會出現問題,因此可能無法正常工作。在wx-dev歸檔中查看有關HiDPI的最新主題。 – Igor

回答

0

你確實可以使用Reparent(),但兩個wxGLCanvas ES它將使更多的意義在你的代碼,只需使用指針給他們,只是它們翻轉,當你想切換他們,因爲這只是其內容的事項,而不是窗戶本身。

+0

的GL-上下文「接合」到*手柄設備上下文*用於窗[MS DOC](https://msdn.microsoft.com/es-es/library/windows/desktop/dd374379(V = vs.85)的.aspx)。所以,我懷疑只是交換指針就足夠了。如果某個機構成功嘗試了它,我想知道。 – Ripi2

+0

[這datenwolf大師回答(https://stackoverflow.com/questions/44840267/will-wglcreatecontext-fail-safely-if-a-directx-context-already-exists-for-the)說,VZ是正確的如果像素格式兼容,則HDC是可交換的。 – Ripi2

+0

我會用什麼方法交換指針?作爲一個測試,我嘗試刪除一個wxGLCanvas,並使用notebook-> RemovePage(canvas-> GetID())和notebook-> AddPage(canvas)將其添加回同一窗口。它刪除畫布渲染,但它不會回來 – buttonsrtoys

相關問題