【发布时间】:2014-08-06 10:10:09
【问题描述】:
我正在使用 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 第一次不绘制?是因为线程,还是初始化?
为什么 MFC 不绘制而 SFML 绘制?
【问题讨论】:
-
IDK 如果 SO 对多个站点上的多张贴有政治态度,但在其他地方也有同样的问题:en.sfml-dev.org/forums/index.php?topic=15541.0
标签: c++ multithreading mfc sfml