I spent a long time doing standard C / C ++ before learning the Win32 API, and to be pretty dumb, the “Win32 API training” part is not the best technical experience in my life.
In one hand, the Win32 API is pretty cool. This is similar to the extension of the standard C API (which requires fopen when you can have CreateFile ). But I think UNIX / Linux / WhateverOS have the same gizmo functions. In any case, on Unix / Linux they have a “Everything is file”. On Windows, they have "Everything is ... Window" (don't joke! See CreateWindow !).
On the other hand, it is an outdated API. You will deal with raw C and raw C madness.
- How to tell one structure its own size in order to pass a
void * pointer to some Win32 function. - Messaging can be quite confusing: mixing C ++ objects with Win32 windows leads to very interesting examples of a chicken or egg problem (funny moments when you write
delete this ; in the class method). - Having a WinProc subclass when you are more familiar with object inheritance is a split voice and less optimal.
- And, of course, there is the joy of “ Why did they do fracking this way in this world? ” Moments when you hit your keyboard with your head, when too much, and return home with keys engraved on your forehead, just because someone thought it’s logical to write an API to enable the color change of the “window”, not by changing one of its properties, but referring to its parent window.
- and etc.
In the last hand ( three hands ??? ), think that some people working with outdated APIs themselves use outdated code style. The moment you hear “ const for mannequins ” or “ I don’t use namespaces because they decrease the execution speed ” or even better “ Hey, who needs C ++? Am I code in my own brand of object-oriented C !!! "(I’m not joking ... In a professional environment, and the result was quite spectacular ...) I feel that only the condemned one feels fear only before guillotine .
So ... All in all, this is an interesting experience.
Edit
After reading this post again, I see that it can be considered too negative. This is not true.
Sometimes it’s interesting (as well as frustrating) to know how everything works under the hood. You will realize that despite the huge (impossible?) Limitations, the Win32 API team did a wonderful job to make sure that everything from you olde Win16 program to your last Win64 over-top application can work together, in past, now and in the future.
Question: Do you really want to?
Since spending weeks to do what can be done (and done better) in other higher-level and / or object-oriented APIs can be quite de-motivational (real life experience: 3 weeks for the Win API, versus 4 hours for three other languages and / or libraries).
In any case, you will find that the Raymond Chen blog is very interesting because of its internal view of the Win API and its evolution over the years:
https://blogs.msdn.microsoft.com/oldnewthing/