Programming Windows – Petzold (Review of fourth edition) – The one book you will no doubt want if you wish to program windows applications! All code is in C (there’s loads of code in this book!), and the book provides a great coverage of basic to intermediate level windows programming. My version of this book covers (among what you would expect) multithreading, memory management, timing, input and graphics. Also included is a welcome chapter on the common controls and information on MDI, OLE and Inter-process Communication via clipboard and DDE. I understand that different editions are not similar (My version has common controls that are missing from the fifth edition, but in turn that edition has information on programming for the internet). I suppose that this is because the subject is so huge and the author wants to represent as much as possible, but therefore the inclusion of one subject pushes another subject out. Still, a definite must have.
Windows Programming from the Ground Up – Schildt (Review of Windows 98 version) - This is a good book to have for those first endeavors into window’s programming as it’s not too involved, shows you what you want quickly and is pretty inexpensive. The book covers the principals of how windows programs operate in relation to windows & messages and how your application is responsible for what is displayed (all this is done in C). After the basic architecture, the book goes on to cover what’s needed to implement your application as a GUI (menus, controls, dialogs, resources, common controls…etc.). Other topics covered include printing, consoles, wizards, registry manipulation and multithreading. One problem is that most versions of this book are now not being printed, but as web auctions are full of copies, that shouldn’t be a problem.
Network Programming for Microsoft Windows – Jones & Ohlund (Review of first edition) – This is a good book for starting to program with networks. The first part of the book covers “Legacy Networking APIs” such as NetBIOS, Named Pipes and Mailslots. In the second part, the book introduces the Winsock APIs and devotes chapters to multicasting, raw sockets, QOS and IO methods. This part also offers information on the Winsock Service Provider Interface which is a topic that has poor coverage on MSDN in my opinion. The book then goes on to cover the Remote Access Service APIs for the third part. All in all, I found this book to be a good resource. My only gripe would be them devoting a whole chapter to Visual Basic’s handling of Winsock. This chapter sticks out like a sore thumb as the rest of the code is in C/C++ - probably more of a political motive than a practical one in my opinion (the book is published by MSPress).
Advanced Windows – Richter (Refers to third edition) – Another must have book for windows. This book picks up from where Petzold left off, but then goes in a more “in-depth” direction. You won’t find any info on nice GUI features as a lot of his code works on dialog apps using “message crackers” to divert message handling – you can tell he wants to work in C++ via MFC, but to allow the book to be more usable, he has to use C. The book concentrates on how windows is setup and how your app works with the system. There are great chapters on processes, virtual memory and threads which give a good idea of how programs operate. The book then goes on to give detailed information on subjects like thread synchronization, memory mapping and structured exception handling. This is all rounded off with a rather exciting chapter on running code in a remote process that ties up a lot of the subjects and gives a hint at what can be done with the info presented. All in all, a great book.
Programming Windows with MFC – Prosise (Refers to second edition) – A great tome on Microsoft Foundation Classes. The author seems to be faced with the same problem as Programming Windows in that he has masses of info to try and cram into one book, but as with Petzold he does a fine job. The book devotes the first chapter to describing the MFC framework and the basic parts of a simple MFC application (application object, window object, message mapping and handlers). A good point of the book is that the Appwizard and Classwizard (two VC++ tools for creating MFC programs quickly by producing a lot of the code for you) are not discussed until later in the book, so you have to deal with the code and how it works before you get to the more convenient methods. This book provides good information on all the subjects you would expect from a normal windows programming reference as well as features specific to MFC like its collection classes, serialization abilities and integration with the IDE. Also included are some of the features that make MFC so appealing (apart from its quick code generation) such as its COM and MDI abilities. All in all I would say that this book is as complete as you could expect from a single volume, and a great reference.