I'm not saying there's a better desktop API, just that Win32 is 'pretty bad' (IMHO). It's a collection of many small annoyances that have been stacked on top of each other over the decades. My favourite mis-feature is probably everything around UNICODE, such as hiding the xxxA() and xxxU() function names under global preprocessor defines, which in turn renames all your own functions which happen to have the same name. It's many little things like that. It's not that the OSX or Linux window system APIs are any better though.
IMHO a modern OS should only come with a low-level window-compositor which just composes canvases, and leaves rendering (including UI) to the user code through a thin 3D API. Other than that: file system, sockets, input, audio, and a very simple main-loop application model, all as C APIs which don't try to be object-oriented, leave all the different language bindings to the user-side.
IMHO a modern OS should only come with a low-level window-compositor which just composes canvases, and leaves rendering (including UI) to the user code through a thin 3D API. Other than that: file system, sockets, input, audio, and a very simple main-loop application model, all as C APIs which don't try to be object-oriented, leave all the different language bindings to the user-side.