BeOS - статьи


Помещение репликанта на Shelf Deskbar'а - часть 3


Далее в конструкторе происходит создание объекта класса DRDAppViewClass, наследованного от класса BView, и попытка помещения его на Shelf. В случае неудачи выводится окно с сообщением об ошибке. Для возможности вывода сообщения и работы с классом BView включаем заголовочные файлы

#include < Alert.h>

#include < String.h>

#include < stdio.h>

#include < View.h>

Класс DRDAppViewClass объявляется следующим образом:

class DRDAppViewClass:public BView { public: DRDAppViewClass(); DRDAppViewClass(BMessage *msg); virtual status_t Archive(BMessage
*data, bool deep=true) const; virtual void AttachedToWindow(); virtual void Draw(BRect p); static DRDAppViewClass *
Instantiate(BMessage *data); virtual void MouseDown(BPoint p); virtual bool QuitRequested(void); private: BPopUpMenu *m; BBitmap *bg; };

Опишем последовательно функции и структуры данных, которые содержатся в классе DRDAppViewClass.

Конструктор класса без параметров создает первоначальный объект - область размером 16x16 пикселов с именем VIEW_NAME, определенным ранее.

DRDAppViewClass::DRDAppViewClass()
:BView(BRect(0,0,15,15), VIEW_NAME, B_FOLLOW_LEFT, B_WILL_DRAW) { return; }

Класс DRDAppViewClass, объект которого помещается на Shelf Deskbar'a, должен быть архивируемым (archivable). Размещение выполняется посредством архивации и последующей разархивации созданного объекта класса. Поэтому в описание класса включены функции Archive, Instantiate и конструктор DRDAppViewClass с параметром BMessage *msg. Функция Archive осуществляет упаковку объекта, созданного конструктором без параметров, в переменную-объект класса BMessage*:

status_t DRDAppViewClass::Archive
(BMessage *data, bool deep=true) const { BView::Archive(data, deep); data->AddString("add_on",APP_NAME); data->AddString("class", VIEW_NAME); return B_OK; }

В архив - объект класса BMessage* - добавляются имя объекта класса DRDAppViewClass для контроля при последующей распаковке и сигнатура приложения.


- Начало -  - Назад -  - Вперед -