Petzold's "Programming Windows" was my bible for so many years, and still has a place alongside Richter's Advanced Windows on my shelf. "Puts the h in hWnd," indeed. That post was pretty accurate and insightful for 2005, I think. The problem with Intellisense was real, and it is finally addressed by the "Generate" option in VS2010. You can call a method, access a variable, etc., as if it already existed, right click it, click "Generate" and generate a method stub, declaration, etc. I've found this pretty useful.
His comments on code generation I think were a lot more relevant in the days of MFC. Everybody hated all the macro-laden generated crap that the compiler produced in order to knit the class framework to the underlying Windows and COM APIs. In .NET languages the combination of a modular API to the underlying system, RTTI, and reflection have made generated code a lot less important. For the most part its use these days is relegated to generating mapping classes to allow strongly-typed access to resources, as well as provide hook points for the IDE designer. These are reasonable uses in my view, and the generated code is neither mystifying nor interesting to anybody other than the guy who had to write the generator.