先从两行代码开始吧:
1 2 3 4 | // 1 FillRect(hdc, rect, (HBRUSH)GetStockObject(WHITE_BRUSH)); // 2 FillRect(hdc, rect, (HBRUSH)(COLOR_WINDOW + 1)); |
它们的区别很显而易见,第一行代码是使用白画刷来填充 DC,第二行代码则是用窗口画刷来填充 DC 的。
虽然它们是有区别的,但是如果当前的窗口画刷是白色画刷的时候,就容易产生问题。——因为在这种情况下,这两行代码达到的效果是一样的,那么很容易用错。
当然,用错也就罢了,大不了将错就错——我的窗口本来就是白的,这总行了吧?
用错不是问题,但混用的话问题就大了。有图为证,Foxmail 6.5 的“远程管理”视图。

不用我多解释了,这个自绘的列表视图混用了两个背景画刷,一个是他自己的 WHITE_BRUSH,另一个是系统的 COLOR_WINDOW。
除应用程序外,网页的设计者们也应注意这个问题,下图是网易邮箱首页的页面。

记得好像在百度还是Google上也看到过这种效果。
—-
验证码~~~