Windows CE is an operating system (OS) based on the Win32 application programming interface (API). Because of this relationship, you must understand the Win32 programming environment to develop Windows CE-based applications. If you are a Windows 95 or Windows NT programmer, you already know how to write code for Windows CE and how to use an integrated development environment (IDE). However, if you have never written an event-driven application, you must become familiar with the fundamentals of Windows programming.
Whether you are an experienced Windows software programmer or a beginner, you must first determine the unique configuration of the hardware platform and shell for which you are developing. Because Windows CE is a modular operating system, an original equipment manufacturer (OEM) chooses specific modules and components to configure Windows CE-based devices. For example, if you are programming for a Handheld PC (H/PC), you must know how much RAM the manufacturer has included.
Once you are familiar with your target platform, your next consideration is what programming environment to use. For your programming environment, you can choose among Microsoft® Visual C++®, Microsoft® Visual Basic® or Microsoft® Visual J++™. For your Windows CE toolkit, you can choose among the following:
In addition to choosing a programming environment and toolkit, you must determine whether or not to use other available programming tools, such as the Microsoft Foundation Class (MFC) libraries or the Active Template Library (ATL).
If you plan to port Windows-based desktop applications to Windows CE, you need to consider how the hardware design of your target device affects ported applications. As you will learn later in this chapter, memory, power, user-interaction devices, and the broad range of CPU and communications options are all critical concerns when porting. For example, hardware design determines whether the user interacts with the device by typing on a keyboard, giving voice commands, or writing on the screen with a stylus.
Other porting considerations include which Win32 APIs are supported by Windows CE, how the interfaces of the two systems are similar and different, and whether the desktop application uses the native language format used by Windows CE. Though these issues require solutions specific to your application and development needs, the guidelines in this chapter can help you write applications that port smoothly.
To debug and test your code, the Windows CE IDE provides an emulator for supported platforms, such as the H/PC. For unsupported platforms, such as a platform with no user interface, Windows CE provides a debugging interface that you can use to write your own tools.
The following sections discuss the programming considerations just mentioned and direct you to additional sources of information. For general information on Windows CE programming considerations, see http://www.microsoft.com/windowsce/.