Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #96, ДЕКАБРЬ 2006 г.

Дао Symbian

Дмитрий «Dem@n» Тарасов

Хакер, номер #096, стр. 096-130-3


- INC – здесь располагаются хедеры использующихся в проекте классов. Стоит отметить, что в Symbian C++ принята очень полезная практика - для каждого более-менее значимого класса создавать отдельную пару «хедер - cpp‘шник». Кроме того, в этой папке имеется файл с расширением hrh, в котором содержится перечисление всех юзерских команд, вызываемых при выборе определенного пункта меню:

enum TXaCommandIds

{

cmd_mymoney=1,

cmd_myanketa,

cmd_myanketa_view,

cmd_myanketa_change,

cmd_shownadv,

cmd_cab,

cmd_hide

};

Чтобы избежать всяких дурацких ошибок при сборке, важно не забывать вносить сюда все новые команды.

Тут же лежит файл, содержащий локализованные версии строк, используемых в приложении для подписей, лейблов, диалогов и т.д. Как правило, такой файл состоит из строк вида:

#define caption_cmd_title "МегаПрога"

#define caption_cmd_exit "Выход"

- SIS – тут находится pkp-файл, содержащий информацию, необходимую для сборки приложения, включая универсальный идентификатор приложения и пути файлов, которых надо поместить в сборку (картинки, ресурсы и т.д.).

Так, например, в строке вида «"C:\Symbian\Series60\7.0\Epoc32\release\thumb\urel\Symbian4.app"-"!:\system\apps\Symbian4\Symbian4.app"» мы указываем, что файл Symbian4.app будет установлен в директорию system\apps в смартфоне.

Сама сборка, то есть установочный sis-файл, окажется в рассматриваемой папке.

- SRC – тут все просто - сорцы используемых в программе классов.

Базовые классы проекта

Элементарный Symbian-проект состоит из следующих классов:

- Application – содержит точку входа и создает класс Document;

- Document – задает некоторые свойства приложения (видимость/невидимость, например) и создает класс AppUI;

- AppUI – формирует интерфейс пользователя и обрабатывает события (выбор пункта меню, элемента списка и т.д.), а также создает класс Container;

- Container – класс, служащий контейнером для контролов (списки, редакторы и т.д.), а также отвечающий за перерисовку и настройку контролов.

Думаю, на начальном уровне особый интерес представляет класс AppUI, поскольку он дает возможности обработки событий и команд пользователя. Рассмотрим, например, как обрабатывается выбор пункта меню. Как ты помнишь, в файле ресурсов содержится идентификатор команды, генерируемой при выборе каждого пункта. За перехват и обработку этих команд отвечает метод HandleCommandL класса AppUI. Код обработки выглядит так:

void CXaAppUi::HandleCommandL(TInt aCommand)

{

switch ( aCommand )

{

case cmd_first:

{

//какой-то код

}

break;

case cmd_hide:

{

Exit(); //выход

}

break;

case EAknSoftkeyBack:

case EEikCmdExit:

{

Exit();//обработка нажатия на правую клавишу «Back»

Назад на стр. 096-130-2  Содержание  Вперед на стр. 096-130-4