1. One way key presses are handled is, the program waits for a key to be pressed in whichever way the input library (SDL, DirectInput, curses, or anything else) you're using provides, and the event is passed down the hierarchy to produce a reaction. E.g. event handler -> main game class -> actors -> animations -> and so on. Most of the work will be performed by your code.
2.
Microsoft XNA ('XNA's Not Acronymed') is a set of tools with a managed runtime environment provided by Microsoft that facilitates computer game development and management. XNA attempts to free game developers from writing "repetitive boilerplate code" and to bring different aspects of game production into a single system. |
3. You've probably heard of Duke Nukem Forever. One of the reasons it's taken so long (and it's still not finished) is because during the first few years of development the team changed engines several times. Any project of a considerable size has to be as completely designed as possible before any work is done, and that design has to change as little as possible during the course of development, with the possible exception of there being something fundamentally broken in the design (I say "possible" because sometimes entire codebases will be scrapped rather than correcting the design). If you pick a language/framework/engine for a project, that language/framework/engine should stay with the project until it's finished. Unless you were
very careful with your design and everything is
very well encapsulated, changing frameworks is very costly. Forget about changing languages, obviously.
That was to answer a more basic problem with your question. To answer the question itself: I'm not familiarized with XNA, but probably not. You'd probably have to resort to dynamic linking or migrating the codebase to .NET -- that is, take the code and have a C++ .NET compiler compile it. It's not really worth the effort, if you ask me. C and C++ are
the languages for game development.