Feature Highlights of Windows CE 2.0

Perhaps the most exciting new feature of Windows CE 2.0 is support for demand-paging of code. In the prior version, programs and DLLs had to be decompressed from the object store and loaded in their entirety into program memory. (By contrast, code in ROM is uncompressed and runs in place.) With demand-paging of code, only the specific pages of executable files that are needed are actually loaded into RAM. This provides more efficient memory use. Just as in the previous version, however, there is no "virtual memory" support for data. That is, unlike Windows NT, there isn't a backing store for program data to be stored when memory gets tight. Instead, code and resources—the read-only data holding user-interface objects, string tables, and so on—get discarded when they aren't needed and reread into memory when they are.
Another improvement over Windows CE 1.0 is ActiveX support. Basic COM objects, structured storage, and automation are all supported in Windows CE 2.0. Compound documents are not supported. A key restriction is that in-process COM objects only are supported; local servers and remote servers are not. As you might expect, the small memory environment of Windows CE is ideal for ATL, which is also supported. A fun exercise is to run the graphical difference program WINDIFF.EXE on the ATL source files for Windows CE and compare them to the regular ATL source files. There aren't many differences, but those that do exist highlight tiny differences between Windows CE and Windows NT.
Another improvement that I can report for Windows CE is better Internet connectivity support. Substantial portions of the WinInet API are supported, so from a Windows CE unit you can do things like file transfers (represented by functions like FtpGetFile), make Internet connections (with functions like InternetCreateUrl), and connect to Web servers (using functions like HttpSendRequest). Another improvement on the Handheld PC Web front is that HTML version 3.2 is supported, while only version 2.0 was supported previously.
Other connectivity-related improvements involve TAPI and Windows sockets. TAPI now supports installable service providers, which supplement the default UNIMODEM AT-command service provider. The sockets-related improvement is that secure sockets are now supported (for details, see "Windows CE 2.0 Networking Offers Exciting Mobile Computing Possibilities" in this issue). Finally, SLIP connections are supported in Windows CE so you can use a serial port to make an IP (network) connection.
On the UI front, support for cascading menus has been added to the Handheld PC and the Palm-size PC. In this way, the UI appears more like desktop systems and less like the hybrid provided by Windows CE 1.0, which used noncascading popup menus and listboxes to display available command choices. Windows CE 2.0 also adds support for a topmost window so that help screens and other windows can float above other windows on the desktop.
On the graphics front, Windows CE 2.0 supports TrueType fonts (used only by the AutoPC and The Handheld PC), printing and color. As of this writing, the only printer driver I know about is a PCL 3.0 driver. Given the dynamic nature of printer device driver development teams, I suspect that more drivers are not too far away. GDI on Windows 2.0 has support for color, which makes sense given the availability of color on newer Handheld PC devices (devices for Windows CE 1.0 were limited to gray-scale devices). By color support, of course, I mean that palettes are supported. But color bitmaps with up to 32 bits per pixel are also supported, a great improvement over the 4-bit gray scale of Windows CE 1.0. And with printing and color, Windows CE 2.0 also provides the common dialogs for controlling printing and selecting colors.
In Windows CE 2.0 you can create pattern (bitmap) brushes, but hatched brushes and dithered brushes are still not supported. Another addition is the ability to create pens for line drawing (before, only stock pens were available). Finally, geometric pens—for drawing scaleable wide lines with mitering, end attributes, and join attributes—are not supported, although of course "regular" cosmetic pens are.
One set of APIs from Windows CE 1.0 has been removed for Windows CE 2.0: the Load APIs for doing installation of applications from the desktop. In place of these functions, Windows CE applications should be installed from the desktop using the application installation manager.