Программирование. 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; - высота) в пикселах.