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 で矩形塗りつぶしをするときにも、わざわざブラシを作らなくてもできるってこと。
#include <list>
int main(
int argc,
char** argv )
{
std::list<Foo> FooList1;
std::list<Foo> FooList2;
if ( FooList1 == FooList2 )
std::cout << "FooList1 == FooList2" << endl;
else
std::cout << "FooList1 != FooList2" << endl;
return 0;
}