Got a nice menu system working now. I've got a seperate CMenu class that is constructed with a vector of CMenuItem(std::string,int) pairs. Anything that owns a CMenu pointer passes Render and OnKeyPress instructions along to the menu if it exists.
Simple but effective and keeps all the complexity of menu management out of the actual game modes.
Moving platforms up next, I think. Always struggle with them a bit.