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


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


SetMainWindow(new MyWindow(0,"Программа 29-3",new MyClient));

Далее описывается класс MyClient окна-клиента (рабочего окна приложения). В описание класса включается конструктор, прототипы функций откликов на сообщения от пунктов меню (и инструментов) и сама таблица откликов. Несколько необычно выглядит конструктор этого класса

MyClient():TWindow(0,""){}

Для того, чтобы правильно описать параметры этого конструктора, мы должны рассмотреть возможные формы конструкторов класса TWindow. В этом классе предусмотрены конструкторы двух видов:

TWindow(HWND hWnd, TModule* module = 0);

TWindow(TWindow* parent, const char far* title = 0, TModule* module = 0);


Окна и их оформление                                                                                                       281

Первый конструктор используется как псевдоним для не OWL-окна и нас интересовать не будет. Второй конструктор требует трех параметров, из которых два назначаются по умолчанию и, вроде бы, могут опускаться. Однако мы не можем объявить конструктор класса MyClient в единственным парамет­ром

MyClient():TWindow(0){}

потому что в этом случае компилятор не сможет определить, каким из двух перегруженных конструкто­ров базового класса мы хотим воспользоваться. По той же причине нельзя объявить наш конструктор в форме

MyClient():TWindow(0,0){}

так как и в этом случае двусмысленность не ликвидируется. Таким образом, у нас остаются только две возможности: объявить конструктор с тремя параметрами (три параметра имеет только нужный нам кон­структор TWindow) или указать в качестве второго параметра не нулевой указатель, а указатель на пус­тую строку (поскольку для окна-клиента заголовок не нужен):

MyClient():TWindow(0,0,0){} MyClient():TWindow(0,""){}

Нами выбран второй из этих вариантов.

Теперь о значении первого параметра. Вообще, в качестве первого параметра должен использоваться указатель на родительский модуль, но если значение этого параметра равно 0, то используются опреде­ленные правила умолчания для автоматической подстановки неопределенного параметра. Для порож­денных окон подставляется указатель на модуль родителя, а для окон без родителя - указатель на модуль приложения, что позволяет, в частности, использовать ресурсы приложения. Для нас это не имеет особо­го значения, поскольку окно-клиент не использует ресурсы.




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



Книжный магазин