Migrating Symbian OS Applications to Windows Mobile-based Smartphones
Microsoft Developer Network has just release a paper describing how to port a simple Series 60 application to the Windows Mobile platform:
This article is for C++ developers who use Symbian OS and who have developed, or are developing, C++ applications for Symbian OS platforms, such as Series 60 or UIQ, and developers who want to implement their applications on the Windows Mobile operating system for Smartphones.
When you first compare the Symbian OS application architecture with the architecture of a Windows Mobile application, they seem to have very little in common. On the Symbian OS, you build C++ graphical user interface (GUI) applications within an application framework by extending base classes that are provided as part of the platform, whereas eMbedded Visual C++ applications that are based on the Windows Mobile operating system are not so closely coupled to the operating system. Windows Mobile has no direct equivalents for common Symbian OS constructs such as two-phase construction or the cleanup stack, and Windows Mobile does not use a Symbian-style client-server model for accessing system resources, such as the file system or socket server.
In most cases, you will have to re-implement your Symbian OS application for Windows Mobile. Re-implementing does not mean that you throw away your design concept or application logic, but you will have to take your existing application concept and produce a new implementation for Windows Mobile. Fortunately, this task is a little easier if you decide to build your application using the C# language and the .NET Compact Framework. Later in the article, you will look at common Symbian OS GUI constructs, such as views, dialog boxes, menus, and lists, and find out how to implement them in a Windows Forms application that is built by using the .NET Compact Framework.
Some code porting may be possible in one situation. If you have implemented your Symbian OS application so it is split into an engine DLL (dynamic-link library) and a GUI application, where the engine DLL implements the engine data or model that the application uses, and the GUI application implements the user interface (UI), it may be possible to reuse some of the C++ code from the engine DLL in a new engine DLL written for Windows Mobile by using eMbedded Visual C++. It is not practical to port the GUI application code, so you must write new GUI code. You could use eMbedded Visual C++ for the new GUI code too, but it is usually much quicker to create a .NET Compact Framework application written in Visual C# and then make calls to the eMbedded Visual C++ engine DLL.
This article shows how to take a simple Symbian program that is built as an engine DLL and a separate GUI application and create a Windows Mobile-based version by porting the engine DLL to a Windows DLL that is written in C++ and by reimplementing the GUI by using C# and the .NET Compact Framework.
Read the full article on MSDN





