簡體   English   中英

SFML不會從另一個線程汲取任何東西,SFML可以與GDI共存嗎?

[英]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黑色矩形消失了。

現在我很困惑。 我有兩個問題:

  1. 為什么SFML不第一次繪制? 是因為線程還是初始化?

  2. 為什么SFML繪制時MFC不繪制?

不要使用CPaintDC。 它專用於僅在WM_PAINT消息處理程序中使用。 您可以改用CClientDC。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM