Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries. Thanks for all your past and future contributions.

Big Picture : S60 and Symbian C++ Learning Path

From Wiki
Jump to: navigation, search
Article Metadata
Code Example
Source file:
Created: kcomex (16 Mar 2008)
Last edited: hamishwillee (30 May 2013)

Needs-update.pngThis article needs to be updated: If you found this article useful, please fix the problems below then delete the {{ArticleNeedsUpdate}} template from the article to remove this warning.

Reasons: hamishwillee (11 May 2011)
Many of the links were to, now defunct. Links have been "disabled" but need to be relinked to the appropriate reference in the Also as this is several years old, it should probably be updated with new links.

This picture will show you a typical learning path tree (reversed). You could find where to start and what you could make after investigating a technologies branch.


The Picture

Bp learning path.jpg


You could also consider NODE A as the start line or the gate to the S60/Symbian C++ world. As long as you had done some C/C++ programmers work earlier, or you are a college(even high school) student who had courses on C/C++ programming language, you are qualified to continue. If unluckily you haven't, I would like to recommend some online resources, course-ware and books worth reading, for very beginner to C/C++ computer programming world. Don't be scared, this isn't that hard, the last "HelloWorld" explanation will certainly ease you.

C programming language from

The classic, the bible of C Programming Language, book from

Programming Languages, Open Courseware by MIT

A site introduces everything about C Programming Language

Thinking in C++, by Bruce Eckel

Actual means of "HelloWorld" in the picture


NODE B has two parts, the left one is more generic and the right one is specific for S60 platform and Symbian OS C++. If you want to learn other platforms such as Apple iPhone or BlackBerry from RIM, there are also generic and specific two steps to follow.

After finish taught yourself these two parts, you should be able to write a "HelloWord" application and test it on your S60 mobile phone.


At NODE B1 you have to fill yourself knowledge about mobile development tools and fundamentals for mobile devices. Even nowadays a smart phone is quite like a desktop or laptop computer, there are still a lot of differences to concern before creating applications. After knowing the differences and mobile-device-only features, you could design and develop high-quality and best suites for phones applications. Remember, BEAR those concepts in mind ALL TIME, this is quite important.


Carbide.c++ | Category:MS_Visual_Studio | Code Warrior

Symbian C++ Development on Linux and Mac OS X

Symbian C++ Development plugin for Apple XCode



S60 Basics

S60 Platform Introductory Guide

<link to apiref l#AboutSymbianOSLibrary%2efinding How to use Symbian Developer Library>


From here we could explore more about your S60 phone's underneath software, know how a native S60 application works and how it looks like inside. I could tell you that the message application or alarm function you used everyday with your phone is written like the way you learned here. They obey the same the S60/Symbian OS C++ application architecture.

  • Important documentations:

<link to apiref Symbian OS C++ Essential Idioms> BIBLE

S60 Platform Application Framework Handbook BIBLE

Symbian OS Basics

Getting started with Symbian OS C++ Development

Symbian C++ Quick Start

  • Reference you should bookmark (or download then put under pillow):

C++ Developer Library from Nokia Developer


There are four parts in NODE C, and I want to let you know their placement is meaningful. C4 is the base, most people start from this part first. C2 and C3 are built on C4, they have a brother-like relationship because each of them targeting different application categories, which will be separated in D level nodes. C1 is advanced topics, you could learn this after you practice C2, C3, C4 fluently. However, C1 is also something fundamental and tightly connected with mobile device specific features, because if you don't know these techniques well, you could only develop small scale utility, but not rock-solid application which could stand in market and industry for seasons. You could review the topology of these four sections again, if C1 removed, then the C2 and C3 will be very unstable, even fall. Also if you are at beginner phase, mastering only C4 will be OK to continue, but with no BIG success.


Frankly, I am also a[n old] student on this advanced topics. I would suggest you find more answers from the resources below.


I always give C2 a summary "Standard S60 UI". Nokia puts a lot of money and human man time on research of User Interface (Human-Machine interacting technologies). S60 is proved to be a solid mobile phone UI with quite good usability. If you are not going to develop a FPS 3D game or your customer is a large company who seeks standardization, topics in this part will be enough.


S60 UI

S60 UI Specification, latest verions: S60 3rd FP2

Introduction to S60 UI components

AVKON UI Resources

Scalable UI Example

<Link to UI Control Framework>


Enjoy playing games? Want to make something entertaining? Here we go. Besides games theory and physical simulation, you have to know how to put result image onto screen. Cause games screening is a so different programming technology that C3 stands beside C2 as its brother. Here you control the screen like a canvas, your drawing tools and user responses are fully under control of your code. Some good resources are:

Direct Screen Access | Symbian C++ Multimedia Articles | Category:Multimedia | Category:Graphics

Scalable screen drawing example

Best Practices for HW Accelerated Graphics Optimization

Introduction To 3D Graphics

Camera Example

Video Example


C4, the base part really has a broad topics to mention. From string(called Descriptors in Symbian OS C++) to file, from dialog to key press, from messaging to networking, and etc. A good way to mastering all you need is to create an experimental project which implements a small useful function, and during your coding try to learn every related API suite.

<link to apiref E32, User Library> | <link to apiref F32, File Server>

<link to apiref BuffersAndStringsOverview%2etoc Buffers and Strings>

<link to apiref MemoryManagementOverview%2etoc Memory management>

<link to apiref TimersAndTimingServicesOverview%2etoc Timers and timing services>

<link to apiref CommsInfrastructure%2eesock%2etoc Sockets server>

<link to apiref System%20Libraries%2esub%2eguide%2egen%2eindex System libraries>

and a variety of topics...


NODE D has three brothers. They are all grown ups who could represent themselves. The policy of sorting them used in this level is the application category. In market, native S60 applications are usually sorted into these three categories: Enterprise, Multimedia and General. As lines between NODE C and NODE D indicate, Enterprise applications often utilize NODE C2 technologies, while Multimedia applications always use NODE C3 technologies. These relationship is in common sense but not an absolute law. In this level there are also a D?-2 block, this block shows you a featured application in this category. What's more is each featured application I showed here is an open source project, means you could grab its source code and make your investigation, learning from it. Isn't it great? And after finishing this level of learning, I think you could make good native S60 applications.

NODE D2(1,2)

Applications in Enterprise category require stability, security, usability and less graphics work. To get these result, some topics could give you convenience.

Platform_Security | Symbian C++ Security Articles

<link to apiref DBMSGuide%2etoc DBMS, Database management system>

Nokia Developer Enterprise Section

Featured application

PuTTY for Symbian OS

NODE D3(1,2)

If an application belongs to neither Enterprise category nor Multimedia/Games category, then it belongs here. It's a little hard to express some detailed requirements for this category, and I would tell the old story: make an idea of an application best solved a practical problem, and try to implement it with your knowledge, learn topics/API suites during your designing and coding.

Possible useful topics may include:

ETel | Etel_Core_API | ECOM

Source and binary compatibility

Development and Quality Assurance guide

Featured application

Screenshot for Symbian OS

NODE D4(1,2)

Games and multimedia player, recorder, manipulators belongs to this category. This is a wonderful and shiny place. Most of API suites from NODE C2 can be used here, and extended technologies could send you to peak.

Full duplex audio example

Music application developer guide

Multimedia framework and other Multimedia APIs

Featured application

OggPlay for Symbian OS

Continue contribution

You could edit this SVG by Ink Scape, an open source and free software running on Windows, Linux and Mac OS X.

The source is here File:BP

kcomex 12:35, 16 March 2008 (EET)

This page was last modified on 30 May 2013, at 04:36.
94 page views in the last 30 days.