Randel Astle is a contract programmer in Sanford, Florida. He has five years experience programming in C and C++.
This book targets beginning Windows programmers. Its tone is light and fairly non-technical. The author never delves into the inner workings of the Windows environment. This approach makes the book an excellent introductory text for beginning programmers who are also just becoming familiar with the Windows environment. The book introduces complex subjects gradually First, it presents the highlights; later, it explores each topic in more depth. The distance between a topic's introduction and more detailed treatment sometimes spans several chapters. Almost every chapter in the book centers around one program which serves to demonstrate the new material.
Organization
This book purports to teach the art of Windows programming in 21 days. Thus, the book is divided into three sections. Each section is called a "week" and consists of seven chapters called "days." The first week provides basic introductory material. The second week elaborates on the first week's material and introduces more advanced concepts. The final week covers only advanced material such as the multiple document interface (MDI), multimedia, and dynamic link libraries (DLLs). The book rounds out each week's material with a Week in Review section, which highlights that week's concepts. Each Week in Review section also contributes code toward construction of a utility that uses the toolhelp DLL to show the user some of what is happening behind the scenes. Each chapter ends with a small quiz, plus an exercises section which encourages students to expand upon the material and possibly extend the program developed in that chapter.The author develops two major programs, a utility and a game. Both programs are interesting in their own right and demonstrate to the neophyte programmer how the different methods are integrated into a larger whole. The author introduces both programs in stages the reader doesn't see the full-blown programs until the end of the book. These programs also provide a framework on which the reader can build other applications.
I liked the book's numerous examples and its two large projects. They make the reading fun and should help beginners see some of the possibilities of the Windows environment. Also, I consider it a strong point that the book presents extensive use of the windowsx.h macros and message crackers. These macros make Windows programming a lot easier since they handle many of the type casts that are routinely required in conventional Windows programs. (If it were up to me, everyone would become familiar with and use these macros. However, it also helps to have studied conventional Windows code, in order to understand the macros and to know when to use them.) Another of the book's strong points is its attention to programming techniques that are portable to the 32-bit environment of Windows NT.
Complaints
My main complaint about this book stems from its broad sweep, and indirectly, from its purported purpose. The book serves as a fairly light introduction to Windows programming, so the author touchs upon the basics and also provides a brief introduction to some advanced topics. However, he explores none of the topics in anywhere near the depth required to give the reader a good understanding of Windows programming. The book teaches a kind of rote memory, mechanical programming. In my opinion, this approach doesn't make for good programmers. This simplistic approach wouldn't bother me so much if it weren't for the book's hype, both on and between its covers. The back cover claims that the reader will be a "veteran" Windows programmer in "no time." Wrong.If that isn't bad enough, the author concludes the final chapter with the observation that if the material in the book is mastered then the reader should feel confident in tackling most standard Windows programming tasks. This is not the case. The serious Windows programmer must rely upon a more in-depth treatise on Windows programming such as Charles Petzold's Programming Windows 3.1.
I have a few lesser complaints to register. While the author takes time to discuss DLLs, and the multimedia extensions to Windows, he neglects some of the less glamorous, but nevertheless important, subjects. For example, he doesn't cover the use of printers, and touches only lightly on memory management. It seems like these subjects would be more useful to most beginning programmers especially given that the multimedia extensions are still evolving as the technology improves. Also, while the author doesn't use the object-oriented programming capabilities of C++, he does use many C++ extensions, which might be disconcerting to someone unfamiliar with C++.
Lastly, this book contains what I consider a higher-than-usual count of typographical errors and inconsistencies. In some cases these goofs are merely confusing; in others, they are downright misleading.
Conclusions
In conclusion, if you want a "soft" introduction to Windows programming or don't want to get bogged down in the details, this is a good starter book. You will find this book especially useful if you are under the dual curse of learning programming and Windows programming at the same time. If you want to master Windows programming read Petzold's book first then read this one to see how to use the windowsx.h macros. This book's breezy, informal style is very readable, but it sacrifices clarity and detail. Let's face it, Windows programming is not a trivial subject. Any text that attempts to treat it as such will offend the experienced and ultimately disappoint the naive.Title: Teach Yourself Windows Programming in 21 Days
Author: Charles Calvert
Publisher Sams Publishing
Price: $29.95
ISBN: 0-672-30344-2
Pages: 904