[英]SFML draws nothing from another thread, and can SFML coexist with GDI?
我正在用MFC編寫SFML測試應用程序。 以下代碼在由AfxBeginThread()函數啟動的另一個線程中的無限循環內運行。 (因為我想像在純WinAPI應用程序中一樣使用SFML)
// SFML Window and View were initialized using CView's HWND
// Use SFML to draw
sf::Color back(255, 255, 0); // a yellow background
_psfwnd->clear(back);
_psfwnd->display();
// Then use MFC GDI functions to draw
CWnd* pwnd;
pwnd = CWnd::FromHandle(_psfwnd->getSystemHandle()); // It seems that the HWND is valid
CPaintDC dc(pwnd);
CRect r(10, 10, 100, 100);
CBrush b(0xFF000000);
dc.FillRect(&r, &b); // draw a black rectangle
結果是帶有黑色矩形的白色背景。 似乎SFML除了MFC之外什么也沒畫。
上面的相同代碼。 現在,我將其放入MFC命令處理程序中(因此,當我單擊一次按鈕時,上面的代碼繪制了一幀)。
這次,窗口背景為黃色,而MFC黑色矩形消失了。
現在我很困惑。 我有兩個問題:
為什么SFML不第一次繪制? 是因為線程還是初始化?
為什么SFML繪制時MFC不繪制?
不要使用CPaintDC。 它專用於僅在WM_PAINT消息處理程序中使用。 您可以改用CClientDC。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.