Программирование под Win32


Программирование для Windows с помощью библиотеки объектов OWL - стр. 7


указывается, что они является производным от TFrameWindow и описывается единственная функция этого класса, именно, его конструктор. В конструкторе MyWindow предусмотрен вызов конструктора ба­зового класса TFrameWindow с передачей ему двух параметров parent и title. Как мы уже видели, при фактическом вызове этого конструктора ему передаются значения параметров 0 и "Программа 25-1".

Далее в текст конструктора MyWindow включены действия, которые мы хотим выполнить при соз­дании главного окна: вызов открытой функции-члена класса TWindow SetBkgndColor() для задания цвета фона окна, а также изменение действующих по умолчанию значений структуры Attr, определяющих ко­ординаты и размеры окна. В принципе эти действия не обязательно вносить в конструктор; их можно было выполнить и после создания экземпляра класса MyWindow, включив в функцию InitMainWindow следующие строки:

mywin->SetBkgndColor(COLOR_WINDOWFRAME+1); mywin->Attr.Х=20; mywin->Attr.Y=20; mywin->Attr.W=200; mywin->Attr.H=60;

Ясно, однако, что этим инициализирующим действиям самое место в конструкторе класса. Вернемся теперь к классу TApplication. Для того, чтобы переопределить его функцию-член Init-MainWindow(), мы создаем производный класс МуАрр:

/*Кпасс МуАрр приложения,  производной от Tapplication*/

class МуАрр:public TApplication{ public:

virtual void InitMainWindow(void); //Замещаем функцию InitMainWindow

};

В описании класса МуАрр указано, что он является производным от TApplication; конструктор этого класса мы не описываем, так как в классе нет никаких данных, и явный конструктор для него не нужен, а в конструкторе базового класса (описанном в файле bc5\include\owl\applicat.h)


226                                                    Глава 25

TApplication(const char

far*name=0,TModule*&gModule=::Module,TAppDictionary*appDict=0);

все параметры задаются по умолчанию, и его вызывать нет необходимости.

Описав в секции public класса МуАрр прототип виртуальной функции InitMainWindow(), мы замес­тили исходную функцию с тем же именем, описанную в базовом классе TApplication. Как отмечалось в гл. 24, при замещении виртуальной функции описатель virtual можно опустить; часто его оставляют ради наглядности.




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