【发布时间】:2011-12-22 05:59:44
【问题描述】:
我正在尝试修复我的程序中的这个奇怪的错误,但我真的不知道它可能是什么。我的程序的这一部分有一个对话框,显示使用 MFC/GDI 的各种项目的预览。当我滚动浏览不同的项目时,有时预览图像会消失并变为空白。但是,它:
- 仅在某些机器上发生
- 显然发生在 Windows 7 和 XP 上
- 不会每次都发生在同一个项目上
- 截图时项目仍然存在,但正常查看时为空白。
- 当我试图用断点跟踪它时,似乎在整个代码的随机位置发生。屏幕从图像变为空白并不总是在同一个位置,这让我相信它不会发生在与我的主线程相同的线程中,即使那确实是当时唯一没有被阻塞的线程。这意味着它发生在 Windows 线程或其他东西中,不是吗?
我假设这是某种竞争条件,但屏幕截图中的预览行为尤其让我感到困惑。为什么截屏时可以,但在屏幕上查看时是空白的?是否有一些“打印屏幕”机制绕过屏幕上显示或更新的内容?
我意识到我没有提供太多信息,人们显然无法提供太多帮助,但如果有人能想到任何事情,将不胜感激:)
谢谢!
【问题讨论】:
-
有人有什么指点吗?谢谢
-
我还发现,如果我在 OnPaint() 函数中为窗口放置断点,它总是会中断并且只是空白。这听起来像是比赛条件吗?
标签: c++ mfc gdi screen-capture