Программирование на С++ с помощью компилятора Borland C++ 5.02 и библиотеки OWL 5.00

Программирование. Borland C++ 5.02 Установка атрибутов главного окна приложения.


     Итак, мы научились создавать объект приложения на основе OWL-класса TApplication, научились создавать оконный класс на основе класса TFrameWindow, но все равно мы не умеем управлять процессом отображения окна на экране. Наше окно появляется в том месте,которое ему укажет Windows, размеры окна устанавливает тоже Windows. Попробуем это исправить.

     Каждый оконный класс библиотеки OWL наследует классу TWindow - общему классу окон и, в частности, наследует переменную Attr, содержащую атрибуты окна. Переменная Attr - это структура типа TWindowAttr, включающая следующие поля:

Члены класса TWindowAttr:

     Style                         DWORD                    Стиль окна

     ExStyle                    DWORD                    Расширенный стиль окна

     X                              int                               X - координата

     Y                              int                               Y - координата


     W                             int                               Ширина окна

     H                             int                               Высота окна

     Menu                      TResId                        ID (идентификатор) ресурса меню

     AccelTable             TResId                        ID ресурса акселератора

     Param                     char far*                    Информация MDI-окна



      Для задания атрибутов окна необходимо только указать соответствующие поля Attr в конструкторе проектируемого окна.

Рассмотрим, как это можно сделать на примере предыдущей программы.

     Находим в теле программы определение котструктора класса StartWindow.



// Конструктор главного окна

StartWindow::StartWindow(TWindow *parent, char far *title)

                       :TFrameWindow(parent, title)

{

     // код конструктора главного окна

}

     Вставляем в код конструктора следующий код:

Attr.Style &= ~WS_MAXIMIZEBOX;

Attr.Style |= WS_VSCROLL;

Attr.X = 100;

Attr.Y = 150;

Attr.W = 400;

Attr.H = 300;

Вот как это должно выглядеть:

// Конструктор главного окна

StartWindow::StartWindow(TWindow *parent, char far *title)

                       :TFrameWindow(parent, title)

{

     // код конструктора главного окна

     // выключить кнопку максимизации

     Attr.Style &= ~WS_MAXIMIZEBOX;

     // добавить к окну вертикальную линейку прокрутки

     Attr.Style |= WS_VSCROLL;

     // расположение и размеры главного окна

     Attr.X = 100;

     Attr.Y = 150;

     Attr.W = 400;

     Attr.H = 300;

}

     Теперь компилируем и запускаем наше окно. Результат практически не отличается от предыдущего, только теперь окно имеет свои координаты, размер и стиль.

Пояснение кода конструктора:

     Первая команда в теле конструктора выключает кнопку максимизациии:

Attr.Style &= ~WS_MAXIMIZEBOX;

     Окно, производное от TFrameWindow, имеет по умолчанию стиль WS_OVERLAPPEDWINDOW. Окно этого стиля имеет заглавие, системное меню, широкую рамку, кнопки максимизации, минимизации и свертывания.

     Для того, чтобы выключить кнопку максимизации, необходимо произвести логическое умножение (&) отрицания (~) WS_MAXIMIZEBOX и Attr.Style.

     В следующей строке конструктора к окну с помощью логического сложения ( | ) добавляется вертикальная линейка прокрутки.

Attr.Style |= WS_VSCROLL;

     Последнее, что делает конструктор класса StartWindow - задает исходное положение (Attr.X = 100;  Attr.Y = 150;) окна на экране и его размеры (Attr.W = 400; - ширина и  Attr.H = 300; - высота) в пикселах.



Содержание раздела