3

我的同学开始使用 Delphi 和 pascal,但我作为 c++ porgrammer 必须使用 win32 API。他们正在改变背景颜色,所以我也需要知道这一点,但有一些不同之处。

在 delphi 中,每个表单看起来都有自己的实例,为一个窗口设置背景颜色只是更改一个值的问题。win32 的情况并非如此,当您更改该值时,它会影响使用该类的每个窗口(更新 ofc 之后)。

我需要做的是清除/擦除我的窗口背景。我可以用 FillRect(..) 做到这一点,它工作得非常好,但我还发现WM_ERASEBKGND似乎正是我需要的。他们提到如果这条消息被处理,我应该返回一个非零值,但他们没有告诉如何处理它。

那么除了FillRect(和类似的)还有什么可以让我用我定义的画笔而不是类的默认值来擦除一个窗口吗?

谢谢

4

2 回答 2

12

WM_ERASEBKGND只需擦除背景即可处理(使用FillRect()很好)。

通过返回一个非零值,您只是告诉 Windows 此消息已被处理,无需进一步操作。没有比这更正式的了。

于 2011-03-06T22:40:42.653 回答
1

如果您将 MFC 与 C++ 一起使用,您还可以查看该框架的 CWnd::OnEraseBkgnd http://msdn.microsoft.com/en-us/library/a0a52fkz(v=vs.80).aspx实现

于 2011-03-06T23:03:36.060 回答