お手軽矩形塗りつぶし
CDC のメンバ関数に、FillSolidRect ってのがある。私の知る限り、SDK には対応する関数がないのだが、引数が RECT と色だけで、ブラシを作成したりする必要がないので、ちょっと矩形領域を塗りつぶすのに重宝している。
ところで、この関数の実装は、普通に考えたら、こう?
void CDC::FillSolidRect( LPCRECT lpRect, COLORREF clr )
{
ASSERT_VALID(this);
ASSERT(m_hDC != NULL);
CBrush SolidBrush;
if ( SolidBrush.CreateSolidBrush( clr ) ) // 指定色のブラシを作成
{
FillRect( lpRect, &SolidBrush );
SolidBrush.DeleteObject(); // 作ったブラシは削除
}
}
でも、デバッグのときにソースを見ると、実はこうなっている。
SDK で矩形塗りつぶしをするときにも、わざわざブラシを作らなくてもできるってこと。