ok, you're right... This is incredibly difficult to read, and largely so jammed together that even after I've put it in allman it still sucks. The good news i think i solved the error i was getting. I should be using switch cases not these if statements. Second note, this code is so vastly mixed I'm going to need some proofing after I've finished to remove any additional elements I miss that would mix the c or c++ only criteria. Attempt one Fail. I'll keep trying.
Also, don't be afraid to start from scratch. Take the concepts that you learned from v.Previous and start fresh on v.Next. Only transplant code to save on typing if you truly grok what it does. Otherwise, retype it from scratch. (Nevermind if source control loses the code copying/branching history. You have bigger fish to fry right now.)
It's something that almost all software engineers/developers learn towards the tail end of their initial learning curve. There are times when you have learned all you can from a particular version of a program, and any further maintenance on it is just a lot of shoveling code around or dealing with tons of special cases because the code was written with too tight coupling or too loose cohesion. The good software exhibits loose coupling/tight cohesion.