擦除窗口背景win32API

时间:2011-03-06 22:34:59

标签: c++ winapi background clear erase

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

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

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

那么FillRect(和similliar)之类的其他东西让我用我定义的画笔擦除一个窗口而不是默认的类?

由于

2 个答案:

答案 0 :(得分:11)

您只需删除背景即可处理WM_ERASEBKGND(使用FillRect()就可以了。)

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

答案 1 :(得分:1)

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

相关问题