first section of the book to become familiar with Windows programming. Although this section isn't the comprehensive tutorial that can be found in books such as Programming Windows, by Charles Petzold, it does provide a base that will carry the reader through the other chapters in the book. It can also help the embedded systems programmer develop fairly complex and quite useful Windows CE programs. The experienced Windows programmer can use the book to learn about the differences among the Win32 APIs used by Windows CE and Windows XP. The differences between Windows CE and Windows XP are significant. The small footprint of Windows CE means that many of the overlapping APIs in the Win32 model aren't supported. Some sections of the Win32 API aren't supported at all. On the other hand, because of its unique setting, Windows CE extends the Win32 API in a number of areas that are covered in this text. This book is also useful for the developer using the .NET Compact Framework. The Compact Framework currently has gaps in its functionality: it requires managed applications to make calls to the operating system to perform certain tasks. The book is a great guide to what's available in the operating system. A chapter in this book discusses the unique nature of developing managed code on Windows CE–based devices.
The method used by Programming Windows CE is to teach by example. I wrote numerous Windows CE example programs specifically for this book. The source for each of these examples is printed in the text. Both the source and the final compiled programs for a number of the processors supported by Windows CE are also provided on the accompanying CD. The examples in this book are all written directly to the API, the so-called "Petzold" method of programming. Since the goal of this book is to teach you how to write programs for Windows CE, the examples avoid using a class library such as MFC, which obfuscates the unique nature of writing applications for Windows CE. Some people would say that the availability of MFC on Windows CE eliminates the need for direct knowledge of the Windows CE API. I believe the opposite is true. Knowledge of the Windows CE API enables more efficient use of MFC. I also believe that truly knowing the operating system also dramatically simplifies the debugging of applications.