void OnPaint()
{
CPaintDC dc(this);
CDC memdc;
CBitmap bitmap;
int x, y, count;
BOOL do_stagger = FALSE;
// Create a memory copy to draw to.
memdc.CreateCompatibleDC(&dc);
bitmap.CreateCompatibleBitmap(&dc, window_rect.right, window_rect.bottom);
memdc.SelectObject(&bitmap);
// Clear the background.
memdc.FillRect(&window_rect, &background_brush);
// Draw the icons.
for (x = start_major, count = 0; count < number_of_icons; x += icon_increment, count++)
{
if (do_stagger)
{
memdc.DrawIcon(x, start_minor + stagger_distance, hicon_array[count]);
}
else
{
memdc.DrawIcon(x, start_minor, hicon_array[count]);
}
do_stagger = !do_stagger;
}
// Copy it to the screen.
dc.BitBlt(0, 0, window_rect.right, window_rect.bottom, &memdc, 0, 0, SRCCOPY);
// Delete the tempory resources.
memdc.DeleteDC();
bitmap.DeleteObject();
}