Yeah, don't do that unless you like to be tortured. My general advice is, acquire a large toolkit, and use the best one for each part of a job. Don't use a hammer when you really need tweezers. Building a professional-looking GUI is kid's play in AutoIt, with intuitive function names and tons of examples (plus a helpful forum). And GUIs are by nature user-interactive, so they spend most of their time idling, waiting for a user to press a button, make a selection, flip a switch, or finally make up their minds what they actually want. You don't need lightning speed for that, and the price you pay in maintaining a complex multi-include C++ code, tracking memory leaks, figuring out unhelpful, sometimes downright wrong error messages, or just trying to recreate the conditions of a HeisenBug is just not worth it (in my opinion). Which is not to say that valid cases don't exist where using C++ (or assembly, or something else maybe) is absolutely the way to go. But don't expect to run into those in your first few years of coding. When you start out, you'd gain more from understanding good coding practice (where to declare which variables, how and when to loop, how to apply conditionals, how to use arrays, how to break up large tasks most efficiently into smaller UDFs that rely on each other, how and when to use recursion), which is going to help you in most other programming languages as well, than wasting time struggling to get a C++ GUI to do what you want it to do, and which would have been a breeze to set up in AutoIt. AutoIt is a much better sandbox environment than C++ to figure these things out. As a kid, I originally started at the other end (assembly, even closer to the metal than C++), but that was like the joke of asking directions in Ireland and being told: "Well, you really don't want to start from here." And I'd be very surprised if you come up with a scenario for a GUI that AutoIt cannot handle (or approximate satisfactorily), and that would be more easily achieved in C++.