Comment by GnarfGnarf

6 years ago

Why on earth would anyone want to learn Win32 in 2019? It's horribly unproductive.

I've been doing Win32 (also called "Petzold-style") since 1995, and am pleased to say I'm converting to Qt for multi-platform capability.

When I look at the dreck necessary to create a dialog box in Win32, and compare to more modern frameworks, it's like milking a cow vs. buying milk at the store. Sure, you're "into the fundamentals", but is that really how you want to spend your time?

> Why on earth would anyone want to learn Win32 in 2019?

Because it's the native API on the most common desktop OS?

  • The Win32 API is on life-support. Microsoft will maintain backwards compatibility for legacy apps of course, but learning Win32 for new development doesn't seem like a good investment (unless, of course, you want to get a job maintaining a legacy Win32 app).

    • Anything that runs on the Windows desktop uses Win32 at some point in its stack. If you work on anything that is close to Win32 then you may also need to work with Win32 itself.

      For example if you work on a game engine or toolset then you must know Win32 - especially if you work on the tools, even if you are using a wrapper like wxWidgets or Qt.

      The only time where you can avoid Win32 is if you're using something that completely abstracts away the entire system, like Java Swing or a web browser.

      1 reply →

Because sometimes it's nice not to have to drag in a large dependency such as Qt. For example PuTTY.exe is only around 500kb and that's all there is to it.

Sometimes, when working on higher-level code, you have to dig into the plumbing layer. For example, I've been writing low-level GPU surface code lately, since SDL and the like are not suitable for our use case (web browsers). There's no getting around message loops and HWNDs if you want to put something on the screen. So it's useful to know the internals, even if you'd never want to write an app that way.

Probably most people wanting to learn Win32 in 2019 have inherited a legacy codebase too large to convert.

Personally I work in wxWidgets but occasionally it's useful to dig into wxWidgets's internals which are (for the Windows version) written in Win32.