I think I can help. First off I should warn you that this will be platform dependant (i.e. work only on windows).
Start by looking at my tutorial on the
windows console output. This has some very useful functions in it. Just keep in mind that with C++ the header should be "cstdio" not "stdio.h" but it would still be "windows.h".
The reason I bring this up is that color allows you to highlight a particular choice as the user presses arrows.
The next part is to react to console input events! (you could have a mouse driven menu if you wanted). The basic functionality is expressed in this example from
MSDN.
What you want to do for now is to copy and paste that example and compile it and make sure it works for you. Then you want to change the KeyEventProc to print out the value of the wVirtualScanCode (it helps if you make the output in HEX -- use the printf's %X format identifier). Then then you run the program and press keys you should see the scan code for the various keys. Make sure your record the values for the arrow keys (the should be something like up=0048, down 0050, left 004b, right 004d). You should also find that the last two digits are the same for the number pad arrow keys and the gray keys).
Once you know the scan codes for the keys you can move on to programming your menu. You will want to use the technique shown in the example to trap input events. Then you look for those scan codes. When they are triggered you have your menu change what is highlighted (i.e. you print the old menu item in normal colors, and the newly hilighted value in new colors using the ConPrintAt function from my snippet (or there is another snippet with a
printfAt function however that function is a little broken since it only prints lines upto 255 characters -- past that it will overload the buffer).
Anyway... that is a lot to chew up, but in the end the logic is really not very hard, though the windows API stuff makes it look very complicated. I will switch over to my laptop and see if I can make a little example.