Is there any way to make the selection mechanism work only visually?  In other words, I want the end-user to be able to make selections but not deactivate the current active cell.

Override OnLButtonHitRowCol( ).  This method is responsible to move the current cell to the new position and call the new control's LButtonDown( ), MouseMove( ) and LButtonUp( ) methods.  If you override this method, you can skip this steps and your active cell will not be deactivated.