1. Other GUIs use win32, so there is almost no overhead (unless its virtual machine based, like java).
2. The hard thing about win32 is that it was developed for years with backward compatibility in mind (win16). Because of that it is full of small remarks that can create some of the hardest problems to find.
Other GUI libraries compiled to native code (like QT or wxWidget) are easier to use and as fast as using win32 directly.
3. I learned it because i wanted to know how windows works, and it was fun to use in private projects. But at some point when you spend hours to add DPI awareness which is built-in, in most frameworks i dropped it for crossplatform development.
It is, but unless someone is writing windows drivers or develop for WinCE there is no real reason to code desktop applications in win32. Especially now, when GNU/Linux based systems are becoming more popular.
... there is no real reason to code desktop applications in win32. Especially now, when GNU/Linux based systems are becoming more popular.
[sarc]Yep, you have a point; there is no reason to learn native Windows development when Linux is becoming more popular. Hell I best jump ship now.[/sarc]
Would you recommend win32 api over other libraries?
If you are developing apps for Windows, then using the Win32 API is a necessity. Even if you use a framework such as MFC or .NET you are still using the Win32 API wrapped up.
It is, but unless someone is writing windows drivers or develop for WinCE there is no real reason to code desktop applications in win32.
What if you need to use a feature that exists exclusively on Windows (e.g. VSS, reparse points, ADS) and there are no wrappers available, or using them is undesirable?
from Charles Petzold, "Programming Windows", Fifth Edition ...
Windows is a complex system; putting a programming layer on top of the API doesn't eliminate the complexity--it mearly hides it. Sooner or later that complexity is going to jump out and bite you in he leg. Knowing the API gives you a better chance at recovery.
Any software layer on top of the native Windows API necessarily restricts you to a subset of full functionality....