草庐IT

ERASEBKGND

全部标签

windows - WM_ERASEBKGND 后面没有跟 WM_PAINT

我的应用收到一条WM_ERASEBKGND消息,但不是后跟一条WM_PAINT消息。很自然地,我的应用程序会删除背景,然后只出现一个空白窗口。我在Vista下运行,但它也发生在XP下。我很确定这是我的错,但我该怎么做才能让Windows无法运行?我对这些消息相当确定,因为我正在使用Spy++观看。这是一个在MSVC2008下编译的C应用程序。 最佳答案 不要在您的WM_ERASEBKGND处理程序中调用BeginPaint/EndPaint。 关于windows-WM_ERASEBKGN

windows - 在 Windows 对话框中处理 WM_ERASEBKGND 时如何避免闪烁

我有一个可以调整大小的对话框。它还有一个自定义背景,我根据WM_ERASEBKGND调用(当前是对FillSolidRect的简单调用)绘制了该背景。调整对话框大小时,会出现巨大的闪烁。为了尝试减少闪烁,我枚举了所有子窗口并将它们添加到剪辑区域。这似乎有点帮助-现在,在重新绘制时,所有子控件中的闪烁最明显。如何在调整大小时使对话框不闪烁?我怀疑双缓冲必须发挥作用,但我不确定如何使用带有子控件的对话框来做到这一点(不让所有子控件都由所有者绘制或类似的东西)。我应该注意,我使用的是C++(不是.NET)和MFC,尽管欢迎使用纯基于Win32的解决方案:)注意:我试过但没有用的一件事(不知道