hmm... never heard of flip(). It sound interesting, so I'll probably look it up.
But still, you haven't really got the point about not just making dcBack an exact copy of dcBitmap. What I mean is that if I don't just want to display one bitmap, then stop redrawing the screen... well, to erase the screen, you draw a big rectangle. Then you BitBlt() a bitmap or something on top of the rectangle. Then, you stick that on the screen. That way you can just keep drawing the updated image all the time. But if you only have the bitmap in dcBack, then you will have to erase the screen before BitBlt()'ing the bitmap on... If you're only updating the screen once in a while it's ok, but for Space Invaders it has to be updated every like, .2 second. That's where it flickers, because the screen gets erased so you don't see the bitmap, then the bitmap gets drawn back, so you see it... and so on.
But if I have the rectangle AND the bitmap already on top of it, and BitBlt() the completed image to the screen, then the bitmap never disappears.