Windows Mobile Smartphone vs Pocket PC
I recently encountered an issue where a Windows Mobile 5 application I wrote wasn’t working on a Windows Mobile 6 smart phone. This particular phone was in Spain so I was not able to hold it in my hands.
Initially I believed it was because I didn’t have the Windows Mobile 6 SDK installed. I needed the app to be backward compatible to Windows Mobile 5 so I haven’t messed around with the new SDK yet. When I looked (skimmed) through the documentation, everything led me to believe that most windows mobile 5 apps will run on a Windows Mobile 6 device. There is the exception that if you are using undocumented APIs, they aren’t guaranteed to work. Since the app I’m working on logs GPS coordinates in the background, it was possible that I was using some calls through a 3rd party library.
Turns out my problem was much more basic. Once I got my hands on an actual Windows Mobile 5 smart device to test on, I discovered the problem right away. The app was failing when it tried to create a list box. My simplistic thinking was that you write applications for “Windows Mobile 5″. You actually write for either Windows Mobile Smartphones or Windows Mobile Pocket PCs. One is more limited than the other. The naming is still confusing to me. My iPhone is a “smart phone” so I assumed that Smartphone was simply Pocket PC + phone. WRONG. Windows Mobile 6 makes it even worse. They label one sdk “standard” and the other “professional”. I am pretty sure professional = pocket pc = more functionality.
So I learned that if you want to write lowest common denominator applications for Windows Mobile, you need to target the smart phone. And you should really test your interface at different resolutions because those smart phones have tiny screens.