OnDraw is required to redraw the whole window because that window might have just been uncovered, or un-minimized. If you want to ignore that basic Windows requirement then just make yourself a DrawMore function and use CClientDC to get a DC to use to draw more.
Your other question implies an incorrect design. Do something in response to a message, then return to MFC so it can get keys, mouse, etc. messages. Your program has to be message-driven. To keep things moving along even when there is no keystroke you can use a timer (SetTimer, handle WM_TIMER messages).