Out of the box, UDK has default set to first-person view mode, whereas our game is to be on the more third-person action-adventure side (With first-person becoming activated when equipping a pistol/rifle.) Is this an example of source code manipulation needed with source code access, or would functionality such as this be attainable using the Unreal Script?
Like M6dEEp said before, most things can be done in C++ or unrealscript ( which is basicly C++ with some syntax differences and some more jingle jangle ). I myself made a 3d game. The camera movement was one of our unique points. It was always in sideview from the player, however the player could move in depth. The levels also had twists and corners, so on these points the camera and the player turned automaticly. For some special events the camera would turn on the x-axis ( over the player his head ) so going from sideview -> top view -> sideview ( other side ). Basicly you can do all these things you want to do via your own code. You'll write a lot of classes based on the unreal classes provided with the UDK dev kit. The manual of UDK is really good and they always have great examples.
When you'll read trough the UDK manual, you'll notice how much freedom you have. I believe their is even a 3rd person view example. Which is simply done by adding a custom camera class, a player and one more I believe. I can't check it, cause for some strange reason I can't connect to the website. I hope you can, cause the manual is awesome!
I reviewed your code in a fast way. Let me list some fast tips:
Don't use the old C preproccesor (#define) way to define constants. Rather use static const variables. These give you what you need without the evil macro's.
For example: "static const int SCREEN_WIDTH = 1280;" instead of "#define SCREEN_WIDTH 1280"
You don't have to write void as a parameter if you want parameters in your function. For example: "void foo(void);" is the same as "void foo();"
Initiate all your variables for your structure variables. For example, on line 54-59 you init. your WNDCLASSEX variable, wc. Don't forget to init the icon members. If you want to use the default one you could just type: "//LoadIcon (nullptr, IDI_APPLICATION);"
Keep your code clean and readable. Maybe it is because you pasted it here in the forum, but if it isn't you should really use more new lines to group your code. Also try to keep a logical system in your tab system. And once you have a system for your tabs and other characters, like your function block stuff. Then try to keep with that system. ( Again, I don't know if this is also is on your computer, it's just how I see it on my computer )
Use more functions. A small example: On line 122 you check the WM_KEYDOWN windows message. Maybe you could then have a function that handles the keyboard input, this keeps your code organized and gives you more control. It also keeps your WndProc function readable.
Didn't debugged your code yet, if someone else doesn't do it, I'll do it later if I find some more spare time.
At a language-agnostic level, a mixin just adds functionality to a class, and is more for programmer convenience and to avoid code duplication. An abstract (base) class forms an is-a relationship and allows for polymorphism. One reason why inheritance is overused is that it's an easy way to implement mixins without writing any boilerplate in languages that don't really support them. The problem is that you're declaring a polymorphic is-a relationship as a side effect, making your API more confusing and possibly adding ambiguity. Hence, newer languages like D and Ruby support mixins as native features, allowing a convenient way to add a bunch of functionality to a class without declaring a polymorphic is-a relationship.
I started with .NET, then I moved on to AS3. But that's all because of family and school.
In my spare time I learned Java and Python. Since last year I study a game development course at College University. So now I've been working with C++ for a little bit more than a year. ( I also learned a lot of more languages than that, but for the sake of this post I'm not going to mention my entire history. The reason I wrote all these things, was to introduce my opinion.
In general the concept of how you have to think is the same for all languages. Yes, this is not true, but how I see it there are a few important differences to be mentioned:
Languages have typical their own set of rules and syntax format. However you will see that the general concepts stay the same. ( e.g.: conditional operators, arithmetic operators)
Each language has its own history and standardisation process. With these each language his standard Libraries get bigger and bigger. So when you learn a new language it is really important that you learn about these libraries, so that you can get the most out of the language as possible. It also boosts your productivity A LOT. ( Just try to imagine what you would do without the STD library of C++ ). It's also important to know the important non standard libraries. (e.g. in C++ you have the Boost library)
It's important to know that you also have layers of languages. Typical described with a generation. The higher the generation the easier it is to understand and use, but the less control you'll have.
Personal, I don't think it's wrong to start with C++ from the start off. A lot of my fellow students learned C++ as their first language and they are doing quite well. Up to the point that they are now writing their own 3D Game Engine with DirectX10. The problem is that C++ has quite a lot to offer. Also don't try to go for some visual interfaces right from the bet. Don't expect to be able to make a visual game as a beginner. Just try to learn the basics and understand what the options are, what is possible and what you should best in certain situations. It's also important that you'll learn that there are certain things you can better avoid, although they exist. I learned C++ with this book (I learned it with the 5th edition, but why bother buying that ancient thing if theirs a 6th edition?). He really explains it well and you will really know your basics. It also gives you an introduction to the STD library.
 Btw, I also wrote a small post about my blog a few days ago in which I list some really great articles, lists. Most of them are more advanced but still, there are some basic ones. So if you have some spare time over you can maybe check it out here.
Ofcourse you could start with a more basic language like Python, but I do not think it is necessary. Keep in mind that I'm just a student, who sucks at expressing himself in the English language.Most of the people answering these topics are way more experienced than I am. With that in mind I hope that i didn't write to many things in a wrong way. And I hope it helps you a little bit.
Btw you really ask a lot of questions about a lot of different things. Don't expect to learn arts and programming at the same level at the same time. Frankly, I think it is quite impossible to become really good in both fields. This is even more true for when you learn everything on your own. In this game course for example, we also learn 3D for games. In which we learn to model, texture and other stuff. For this we use 3dsmax, photoshop and Mudbox. The thing is their is no student that is really good in both 3D and programming. And even in programming there are people who are better in certain areas than they are in others.
So try to learn only one or two things at the same time and try to really master them for a while. If you want to learn to Program don't expect to become good in something really fast. There is really a lot you'll have to learn. There is so much you have to know. Becoming a master, takes a life of experience. With this in mind, just try to learn the basics and continue from there on. Get to know yourself and your boundaries. Learn to embrace failure and headaches.
The website AIGameDev has done a broadcast about this subject. If you're a paid user you can watch the broadcast here. As far as I know, there isn't anything else you can find on the net about this subject.
If you want to learn behavior tree's and how to use it in games, than here is a short list: