Whoa, you are going to fast for me!
Hey, BC.At one time the API documentation was not correct. Has that changed? Years ago the complaint was that MS did not fully document the OS. So MS people had the advantage of knowing the 'tricks' of how ther OS really worked.
So, may question is, has that improved now? Can we write programs to the API with confidence that it will work as documented?
Or, do I have to write everything inside of a Microsoft IDE, like Visual C++ and let .NET do it all for me? I do not like .NET, and you know. Or, can I still use COM to write future programs for Windows 7,8,9and forever?
Actually- I have the windows 3.1 SDK and I can tell you it is VERY thorough. And nowadays, it's online at MSDN.
I believe the issue was that MS wasn't releasing stuff like the commandbars used in office. But that's not part of windows- instead it's part of office. The office team built it, because they found the built in menus and toolbar controls insufficient. I remember I wrote a custom commandbar control myself as well. It was a bit buggy in parts because it wasn't finished, but it was fairly similar to the commandbars available in Office 2000.
In any case- All you need to compile windows applications is the windows header files and a C compiler that supports the language features supported in those headers as well as the ability to compile PE executables.
I don't know about you, but I don't like having these "class libraries" do things for me. In fact, I write my own, so I can learn the implementation details myself. For example I have so far completely duplicated and extended almost all of the features of the FileSystemObjects within my own BCFile library.
As far as COM- I love it. And I think it will be around for a while- office add-ins are still COM components, even with 2007. I don't think MS wants to break those!
Something that needs to be remembered is to define the VERSION macros for the target OS, otherwise you will be unable to use API routines from anything past Windows 95 (the default define is 0x400, which is win95).