When working on my HyperLink control I found the need to do flicker free drawing and I thought about creating a simple class which could do so automatically, with the least amount of code modification possible. So I wrote this little class to accomplish that.
Using the code
Simply replace the declaration of your DC in your
OnPaint like so:
And you're done. If you resize the window in the
OnPaint after the creation of the
CBufferDC, you must remember to call
SetBoundsRect with the new client rectangle and with the
flags parameter set to
DCB_DISABLE if you want to avoid the default behavior of calling this method on a CDC. The reason to use this method and not a custom one is that I wanted my class to be compatible with the
CPaintDC one so that someone could simply change the class names to obtain the purpose but could safely return back to the
CPaintDC without the need to change his code.
The code provided within the demo (particularly the
CBallBouncer class) is only for demonstrative purposes, and is obviously poorly-written and not reusable. But as I said this is only a demo so I wrote it fast to provide a demonstration in which the functionality of the
CBufferDC class (that is, avoid flicker) was clear and nothing more.
So, that's all, I think.