|
Программирование >> Программирование на языке c++
торе интерфейсного объекта родителя. Предположим, необходимо нарисовать кнопку в главном окне, показанном на рис. 9.3, т. е. мы хотим вывести окно, показанное на рис. 9.11. В этом случае наша программа будет выглядеть примерно так: #include <owl\button.h> файл заголовка для класса TButton #include <owl\applicat.h> #include <ow(\framewin.h> r--- взаимоотношения межд> родителями и ДС1ЪМИ PoAjnlejib P46ei Т парам Pc JCIJOK >тса 1атель на интерфейсный объект родитель при конструированш! этого I объекта; конструктор получает указателе parent, на объект-- родитель параметр Рис. 9.10. Списки родитель - ребенок Окно-родитель- Окно-ребенок-
Главное окно Рис. 9.11. Окно с кнопкой class DrawButton : public TWindow { public: DrawButton(TWindow* parent = 0); объявление конструктора для класса DrawButton ниже приводится описание конструктора для класса DrawButton DrawButton :: DrawButton(TWindow* parent) : TWindow(parent,0,0) { new TButton(this,-1, my button ,100,50,80,30); } class my app : public TApplication { public: my app() : TApplication{) {} virtual void InitMainWindowQ; void my app :: lnitMainWindow{) { SetMainWindow(new TFrameWindow(0, New , new DrawButton)); } int OwlMain(int, char**) { return my app().Run(); } Эта очень простая программа в действительности демонстрирует многие особенности работы с библиотекой ObjectWindows. Поэтому рассмотрим ее подробнее. Функция InitMainWindow представлена в виде: void my app :: lnitMainWindow() { SetMainWindow(new TFrameWindow(0, New , new DrawButton)); } где третий параметр конструктора TFrameWindow - это указатель на объект, связанный с рабочей областью главного окна. Этот объект (в нашем примере объект класса DrawButton) обслуживает нашу рабочую область, т. е. его функции можно использовать для выполнения разных полезных действий (рис. 9.12). Конструктор класса DrawButton задан в виде: Рабочая область Объект DrawButton обслуживает рабочую область Рис. 9.12. Рабочая область главного окна DrawButton :: DrawButton{TWindow* parent) : TWindow(parent,0,0) { new TButton(this,-1, my button ,100,50,80,30); } Oh выполняет две функции: вызывает конструктор базового класса TWindow; создает интерфейсный элемент ребенок посредством вызова конструктора класса TButton. Когда объект ребенок описывается в конструкторе объекта родителя, интерфейсный элемент для ребенка будет автоматически создан. В нашем примере мы увидим кнопку в рабочей области (см. рис. 9.11). Класс TWindow имеет два конструктора, один из которых описан в следующем виде: TWindow (TWindow* parent, const ciiar far* title, TModule* module); где parent - указатель на интерфейсный объект родитель. Если конструируется окно, у которого нет родителей, то назначается parent=0; title - указатель на строку заголовок. В нашем примере мы хотим использовать заголовок New из объекта класса TFrameWindow, поэтому параметр title имел значение 0;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |