Установка атрибутов окна

   
На этом шаге мы рассмотрим способ установки атрибутов окна.

   
В программах предыдущих шагов мы не управляли процессом отображения окна на экране.
Наше окно появлялось в том месте, какое укажет Windows. Размеры окна также пока находятся вне нашегоо контроля.
Рассмотрим средства, управляющие положением окна на экране и его размерами.

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

Таблица 1. Члены класса TWindowAttr

Имя Тип Описание
Style DWORD Стиль окна.
ExStyle DWORD Расширенный стиль.
X int х-координата.
Y int y-координата.
W int Ширина окна.
H int Высота окна.
Menu TResId Идентификатор ресурса меню.
AccelTable TResId Идентификатор ресурса акселератора.
Param char far* Информация MDI-окна

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

#include <owl\applicat.h>
#include <owl\framewin.h>

//Класс приложения.
class TApp : public TApplication
{
  public:
   TApp():TApplication() {}
   void  InitMainWindow();
};

// Класс главного окна.
class TWndw : public TFrameWindow
{
  public:
   TWndw (TWindow *parent, const char far *title);
};

//Конструктор  главного  окна.
TWndw::TWndw(TWindow *parent, const char far *title):
		TFrameWindow(parent,title)
{
  //Выключить кнопку максимизации.
  Attr.Style &= ~WS_MAXIMIZEBOX;
  //Добавить к окну  вертикальную линейку  прокрутки.
  Attr.Style |= WS_VSCROLL;
  //Определить расположение и размеры окна.
  Attr.X = 100;
  Attr.Y = 100;
  Attr.W = 400;
  Attr.H = 300;
}

//Создание главного окна приложения.
void TApp::InitMainWindow()
{
  TFrameWindow *wndw = new TWndw(0, "Управляемое окно");
  SetMainWindow(wndw);
}

int OwlMain(int, char* [])
{
  return TApp().Run();
}

Текст этой программы можно взять здесь.

   
Программа из этого примера похожа на программы, приведенные на предыдущих шагах. Ее отличие в том,
что конструктор класса главяого окна не является теперь встроенным и расширен за счет включения команд,
устанавливающих некоторые атрибуты окна. Как всегда, конструктор снача ла вызывает конструкторы базового класса:

    TWndw::Twndw  (TWindow  *parent, const  char  far  *title): 
          TFrameWindow   (parent, title);

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

  Attr.Style   &=  ~WS_MAXIMIZEBOX;

   
Как же кнопка максимизации оказалась включенной? Окно, производное от TFrameWindow, имеет по умолчанию стиль
WS_OVERLAPPEDWINDOW. Окно этого стиля включает заголовок, системное меню, кнопки минимизации и максимизации. Поэтому, чтобы выключить
кнопку максимизации, необходимо произвести логическое умножение (AND) отрицания WS_MAXIMIZEBOX и
Attr.Style.

   
Из следующей строки конструктора видно, как к окну добавляется стиль с помощью логического сложения нового стиля с Attr.Style:

  Attr.Style  |= WS_VSCRQLL;

   
В данном случае к окну добавляется вертикальная линейка прокрутки. Разумеется, вы можете осуществить полный сброс стиля окна с помощью присваивания:

  Attr.Style = WS_POPUP | WS_SYSMENU | WS_CAPTION;

   
Стиль окна хранится в двойном слове, биты которого отвечают за тип и составные части окна. Различные стили окон определены заранее через список констант.
Вот некоторые из них:

  • WS_BORDER - создает границу,
  • WS_CAPTION - создает линейку заголовка,
  • WS_CHILD - создает дочернее окно,
  • WS_HSCROLL - создает горизонтальную линейку прокрутки,
  • WS_MAXIMIZE - максимизирует окно,
  • WS_MAXIMIZEBOX - создает кнопку максимизации,
  • WS_SYSMENU - создает системное меню,
  • WS_VISIBLE - создает изначально видимое окно, и т.д.

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

   
Последнее, что делает конструктор TWndw, - задает исходное положение и размеры окна. Это производится через установку значения элементов
X, Y, W и Н структуры Attr, определяющих соответственно х- и у-координаты, ширину и высоту:

  Attr.X = 100;
  Attr.Y = 100;
  Attr.W = 400;
  Attr.H = 300;

   
В вышеприведенном случае основное окно будет иметь координаты 100, 100 и размер 400 пикселей в ширину и 300 пикселей в высоту. На рисунке 1 показано окно,
полученное с помощью этой программы.


Рис.1. Результат работы приложения

   
На следующем шаге мы рассмотрим функцию закрытия окна.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий