Please see my past answers:
MFC Drawed lines is disappeared[
^],
Zooming Panning 2D vector graphics C++[
^].
They should explain your the mechanism. You can find MFC-specific wrappers of the Windows
Invalidate*
API yourself.
The part "How do I prevent my OnPaint operation from being overridden?" does not seem to make much practical sense, just don't override what you don't want to override, or allow the users of your class to override what they want, because it makes a lot of sense. At the same time, I guess you need to learn this:
https://msdn.microsoft.com/en-us/library/0w2w91tf.aspx[
^].
[EDIT — in response to the follow-up question]
Please see my comment below on
flicker,
WM_ERASEBKGND
and
double buffering.
This CodeProject article can help you to understand further detail:
Flicker Free Drawing In MFC[
^].
—SA