Building Windows Mobile 6.5 Apps in Visual Studio

Developing applications for Windows Mobile 6.5 relied on a specific toolchain centered around Microsoft Visual Studio 2005 or Visual Studio 2008 paired with the Windows Mobile 6.5 Developer Tool Kit. This article details the legacy development workflow, outlining the required integrated development environment (IDE), the software development kits (SDKs), the choices between native and managed code, and the deployment mechanisms using emulators and physical hardware.

Required Software and Environment

Building for Windows Mobile 6.5 required an older development setup because modern versions of Visual Studio dropped support for the platform:

  • Integrated Development Environment: Developers primarily used Visual Studio 2008 Professional or Team Edition. Visual Studio 2010 removed support for the Smart Device project templates targeting Windows Mobile.
  • Operating System Compatibility: Development machines typically ran Windows XP, Windows Vista, or Windows 7.
  • Connectivity Software: Communication between the IDE and devices required Microsoft ActiveSync (on Windows XP) or Windows Mobile Device Center (on Windows Vista and Windows 7).
  • SDKs: The Windows Mobile 6.5 Professional Developer Tool Kit and the Windows Mobile 6.5 Standard Developer Tool Kit provided the necessary headers, libraries, and device emulator images.

Project Setup and Framework Options

When initiating a project in Visual Studio, developers selected the Smart Device project type under either Visual C# / Visual Basic or Visual C++. Developers then selected the target platform (Windows Mobile 6 Professional for touchscreen devices or Standard for non-touchscreen devices) and the target .NET Compact Framework version.

Developers chose between two primary development paths:

  1. Managed Code (.NET Compact Framework): Developers used C# or Visual Basic .NET to target the .NET Compact Framework (versions 2.0 or 3.5). This approach offered rapid UI development via Windows Forms and simplified memory management through garbage collection.
  2. Native Code (Win32 / MFC / ATL): Developers used C++ to target the native Win32 APIs for resource-constrained tasks, games, or deep hardware integration. This method avoided the runtime overhead of the Compact Framework.

User Interface Design

Visual Studio included a visual designer tailored for mobile screens. Developers dragged and dropped controls onto design surfaces formatted to mobile resolutions such as QVGA (240x320), VGA (480x640), and WVGA (480x800). Because Windows Mobile 6.5 introduced capacitive touch support alongside traditional resistive screens, developers had to account for both stylus-based input and finger-friendly UI paradigms, often custom-drawing controls to handle touch interactions cleanly.

Testing and Emulation

Visual Studio integrated directly with the Microsoft Device Emulator:

  • Virtual Execution: Emulators ran the actual ARM binary code using an execution engine on the desktop, simulating hardware components like cellular radios, battery levels, and screen orientations.
  • Networking: Emulators could map network access using the Virtual PC Network Driver or cradle through ActiveSync/Windows Mobile Device Center to simulate an active internet connection.
  • Hardware Debugging: Developers plugged physical devices into the PC via USB, enabling live breakpoint debugging and memory profiling directly on the device hardware.

Packaging and Distribution

Once compiled and tested, developers packaged their applications into .cab (Cabinet) files using the Smart Device CAB Project template inside Visual Studio. The CAB file bundled the executable, dependent DLLs, registry entries, file associations, and shortcuts to the Start Menu. End users or enterprise administrators installed these CAB files directly onto the mobile device storage.