МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Программирование на Borland С++

    Перейдите в это поле и измените текст на “Small”. Проверьте, что в

    создаваемом меню отображается пункт Small.

    7) В поле Item Id редактора меню введите имя константного

    идентификатора, который будет передаваться программе при выборе пункта меню

    Small. Пусть это будет CM_SIZE_SMALL (CM означает Command, команда).

    8) Создадим теперь пункт меню Large. Для начала проверьте, что в окне

    описания меню выделен пункт меню Small, т. к. создаваемый нами новый пункт

    меню должен появиться под ним. Затем выполните команду меню редактора

    Menu|New menu item. Результатом работы команды будет новый пункт меню,

    который будет расположен под командой Small. С помощью описанных выше

    действий дайте пункту меню имя Large и впишите идентификатор команды

    CM_SIZE_LARGE.

    Обратите внимание! Необходимо выбирать New menu item, а не New menu pop-

    up, который создает не команду, а пункт меню, который сам содержит свои

    команды и при активизации открывает вложенное в него меню.

    9) Проверьте, что показывает поле тестирования созданного Вами меню.

    На этом создание меню программы завершено. Закройте Workshop и ответьте

    Yes на предложение программы сохранить результат Вашей работы.

    Необходимо также отметить, что в header-файл, имя которого Вы указали в

    начале построения проекта, будут помещены имена константных идентификаторов

    пунктов меню CM_SIZE_SMALL и CM_SIZE_LARGE, а также идентификатор меню

    MENU_1, на которые Вы будете ссылаться при написании программы.

    7.2. Программирование с использованием меню

    Нижеследующее приложение использует команды Small и Large для управления

    выводом на экран фигур разного размера.

    [pic]

    Прежде, чем приводить текст программы покажем, что же мы получили в

    результате манипуляций над Resource Workshop.

    7.2.1. Листинг rh-файла

    /**************************************************************************

    lab3с.rh

    produced by Borland Resource Workshop

    **************************************************************************/

    #define MENU_1 1

    #define CM_SIZE_SMALL 102

    #define CM_SIZE_LARGE 101

    7.2.2. Листинг rc-файла

    /**************************************************************************

    LAB3С.RC

    produced by Borland Resource Workshop

    **************************************************************************/

    #include "lab3с.rh"

    MENU_1 MENU

    {

    POPUP "Size"

    {

    MENUITEM "Small", CM_SIZE_SMALL

    MENUITEM "Large", CM_SIZE_LARGE

    }

    }

    Вообще rc-файл содержит в себе текстовое описание ресурсов и, как может

    показаться, легче написать его с помощью текстового редактора. Это верно

    только для простых файлов ресурсов. Для написания же больших программ лучше

    воспользоваться возможностями Resource Workshop.

    7.2.3. Исходный текст приложения

    #include

    #include

    #include

    #pragma hdrstop

    #include "lab3а.rh"

    class TMyWin : public TFrameWindow

    {

    public:

    TPoint pn,pk;

    TMyWin() : TFrameWindow(0,"The Paint function")

    {

    pn.x=100;

    pn.y=50;

    pk.x=300;

    pk.y=200;

    }

    protected:

    void Paint(TDC&,BOOL,TRect&);

    void CmLarge();

    void CmSmall();

    DECLARE_RESPONSE_TABLE(TMyWin);

    };

    DEFINE_RESPONSE_TABLE1(TMyWin,TFrameWindow)

    EV_COMMAND(CM_SIZE_LARGE,CmLarge),

    EV_COMMAND(CM_SIZE_SMALL,CmSmall),

    END_RESPONSE_TABLE;

    void TMyWin::Paint(TDC &dc,BOOL,TRect&)

    {

    TColor color(TColor::LtBlue);

    TPen pen1(color);

    dc.SelectObject(pen1);

    dc.Rectangle(pn,pk);

    TPen pen2(TColor::LtGreen);

    dc.SelectObject(pen2);

    dc.Ellipse(pn,pk);

    }

    void TMyWin::CmLarge()

    {

    pk.x=500;

    pk.y=400;

    Invalidate();

    }

    void TMyWin::CmSmall()

    {

    pk.x=150;

    pk.y=100;

    Invalidate();

    }

    class TMyApp : public TApplication

    {

    public:

    TMyApp():TApplication()

    {}

    void InitMainWindow()

    {

    MainWindow=new TMyWin();

    MainWindow->AssignMenu(MENU_1);

    }

    };

    int OwlMain(int, char *[])

    {

    TMyApp app;

    return app.Run();

    }

    7.2.4. Пояснения к программе

    Класс TMyWin содержит объявление членов-функций Paint, CmLarge, CmSmall.

    Описание таблицы реакции показывает, что в ответ на выбор команды меню

    Small с идентификатором CM_SIZE_SMALL будет вызываться функция CmSmall.

    Аналогично для команды Large. При ее выборе будет вызвана CmLarge. Еще раз

    подчеркнем, что для команд меню нет стандартных функций отклика, как это

    было с системными сообщениями Windows, т. е. в макросе Вы можете указать

    имя любой функции отклика, главное, чтобы она не принимала и не возвращала

    значений.

    Описание функции Paint целиком совпадает с ее текстом в предыдущем

    разделе.

    Функции отклика на сообщения меню изменяют координаты правого нижнего

    угла прямоугольника и вызывают инкапсулированную в TFrameWindow функцию

    Invalidate, которая заставляет Windows обновить окно приложения. Вызов

    данной функции говорит системе, что окно требует обновления и та посылает

    приложению сообщение WM_PAINT.

    7.3. Задание

    1) Создать и выполнить приложение.

    2) Удалите вызов функции Invalidate в одной из функций отклика.

    Объясните изменения в логике работы приложения.

    3) Создайте дополнительное меню Color с командами Black и Red, которые

    должны изменять цвет выводимых на экране фигур.

    8. Управляющие компоненты Windows

    Рассмотрим несколько управляющих компонент Windows, облегчающих диалог с

    приложением.

    Первый компонент - это линейка прокрутки. Она может быть расположена в

    окне приложения и представляет собой вертикальную или горизонтальную полосу

    с ползунком. Ползунок можно передвинуть, зацепив его указателем мыши и

    перетащив вдоль полосы прокрутки.

    [pic]

    Линейка создается как объект класса TScrollBar в конструкторе окна

    приложения. Конструктору TScrollBar передаются координаты и размеры

    создаваемой линейки, а так же тип линейки - горизонтальная или

    вертикальная.

    Покажем, как использовать в приложении вертикальную линейку прокрутки.

    Во время перемещения ползунка вертикальная линейка генерирует

    уведомляющие сообщения WM_VSCROLL. Вы можете перехватить и обработать эти

    сообщения, объявив в классе-владельце такой линейки функцию отклика

    EvVScroll и дополнив таблицу отклика класса макросом EV_WM_VSCROLL. Функция

    будет вызываться при изменении положения ползунка на линейке.

    При создании линейки присвойте адрес сконструированного объекта

    указателю. В результате Вы получите доступ к разнообразному набору функций

    объекта. К примеру, появится возможность позиционировать ползунок из

    программы, получать позицию ползунка и изменять масштаб линейки ( по

    умолчанию позиция ползунка на линейке изменяется от 0 до 100).

    Все сказанное выше справедливо и для горизонтальной линейки прокрутки,

    но для реакции на ее сообщения требуется функция EvHScroll и макрос

    EV_WM_HSCROLL.

    Теперь уделим внимание другому компоненту визуального интерфейса Windows

    - кнопке.

    Кнопка может быть расположена в окне приложения и представляет собой

    прямоугольник с надписью. Кнопка реагирует на щелчки мышью выдачей

    уведомляющего сообщения. Она создается в конструкторе окна приложения, как

    объект класса TButton.

    Конструктору TButton передается адрес объекта-окна, в котором Вы хотите

    разместить кнопку, текст надписи на кнопке, ее координаты и размер.

    Конструктору также передается константный идентификатор кнопки. Данный

    идентификатор совпадает с идентификатором уведомляющего сообщения,

    генерируемого кнопкой при нажатии.

    Реакция на нажатия кнопки реализуется аналогично реакции на выбор

    команды меню: Вы описываете функцию реакции (имя функции произвольное) на

    нажатия кнопки и помещаете в таблицу реакции макрос

    EV_COMMAND(BUTTON_ID,UserName)

    с идентификатором кнопки и именем функции отклика.

    Приложение может иметь несколько кнопок с различными идентификаторами и

    для каждой кнопки нужно создать свою функцию отклика и добавить элемент в

    таблицу реакций.

    Если Вы хотите реагировать только на нажатия кнопки, никак не изменяя ее

    характеристик, то присваивать указателю адрес созданного объекта-кнопки не

    требуется.

    8.1. Изменение размера выводимой графики с помощью линейки прокрутки

    В нижеследующем приложении в прикладном окне выдается голубой

    прямоугольник с вписанным в него эллипсом. В окне создается вертикальная

    линейка прокрутки. Перемещая ползунок линейки, можно плавно изменять

    размеры выводимых геометрических фигур в некотором фиксированном диапазоне.

    8.1.1. Исходный текст программы

    #include

    #include

    #include

    #include

    class TMyWin : public TFrameWindow

    {

    public:

    TPoint pn,pk;

    TScrollBar *sb;

    TMyWin() : TFrameWindow(0,"The Paint function")

    {

    sb=new TScrollBar(this,1,350,100,20,125,FALSE);

    pn.x=100;

    pn.y=40;

    pk.x=300;

    pk.y=pn.y;

    }

    protected:

    void Paint(TDC&,BOOL,TRect&);

    void EvVScroll(UINT, UINT, HWND);

    DECLARE_RESPONSE_TABLE(TMyWin);

    };

    DEFINE_RESPONSE_TABLE1(TMyWin,TFrameWindow)

    EV_WM_VSCROLL,

    END_RESPONSE_TABLE;

    void TMyWin::Paint(TDC &dc,BOOL,TRect&)

    {

    TColor color(TColor::LtBlue);

    TPen pen1(color);

    dc.SelectObject(pen1);

    dc.Rectangle(pn,pk);

    TPen pen2(TColor::LtGreen);

    dc.SelectObject(pen2);

    dc.Ellipse(pn,pk);

    }

    void TMyWin::EvVScroll(UINT scrollcode, UINT thumbPos, HWND hwnd)

    {

    TFrameWindow::EvVScroll(scrollcode,thumbPos,hwnd);

    InvalidateRect(TRect(pn,pk));

    pk.y=pn.y+sb->GetPosition()*2;

    UpdateWindow();

    }

    class TMyApp : public TApplication

    {

    public:

    TMyApp():TApplication()

    {}

    void InitMainWindow()

    {

    MainWindow=new TMyWin();

    }

    };

    int OwlMain(int, char *[])

    {

    TMyApp app;

    return app.Run();

    }

    8.1.2. Пояснения к программе

    Заголовочный файл owl\scrollba.h содержит описание класса TScrollBar и

    его членов-функций. Описание класса TMyWin содержит объявления точек

    (объектов класса TPoint) для левого верхнего и правого нижнего углов

    прямоугольника. В классе дополнительно объявлен объект класса TScrollBar,

    представляющий собой вертикальную линейку прокрутки. TMyWin содержит также

    функцию отклика EvVScroll на сообщения от линейки прокрутки и

    переопределенную функцию Paint.

    В теле конструктора TMyWin создается линейка прокрутки и задаются

    начальные значения координат двух углов прямоугольника.

    Описание таблицы реакций содержит элемент EV_WM_VSCROLL.

    Функция EvVScroll вызывает одноименную функцию базового класса для

    обеспечения полной обработки поступающих от скроллера сообщений. Затем

    функция требует перерисовать часть рабочей зоны окна для вывода

    геометрических фигур с измененными размерами. Для получения положения

    ползунка на линейке прокрутки используется функция GetPosition, которая

    возвращает число в диапазоне от 0 до 100. Вызов функции UpdateWindow

    вызывает немедленное обновление окна приложения, посылая окну WM_PAINT в

    обход системной очереди сообщений.

    8.1.3. Задание

    1) Создать исследовать работу приложения.

    2) Изменить вертикальную линейку прокрутки на горизонтальную.

    3) Исследовать работу приложения, закомментировав вызов UpdateWindow в

    теле EvVScroll.

    4) Исследовать работу приложения, удалив вызов функции InvalidateRect.

    5) Измените таблицу реакции, удалив в ней EV_WM_VSCROLL. Объясните

    поведение приложения.

    8.2. Изменение цвета выводимой графики с помощью кнопок

    В приводимом здесь тексте Windows-приложения цвет выводимых на экран

    геометрических фигур изменяется при нажатии одной из двух кнопок,

    размещенных в окне приложения.

    8.2.1. Исходный текст программы.

    #include

    #include

    #include

    #include

    #define CM_BUTTON1 100

    #define CM_BUTTON2 200

    class TMyWin : public TFrameWindow

    {

    public:

    TPoint pn,pk;

    int nColor;

    TMyWin() : TFrameWindow(0,"The Paint function")

    {

    new TButton(this,CM_BUTTON1,"Palette 1",350,50,80,30);

    new TButton(this,CM_BUTTON2,"Palette 2",350,100,80,30);

    pn.x=100;

    pn.y=50;

    pk.x=300;

    pk.y=200;

    nColor=1;

    }

    void Paint(TDC&,BOOL,TRect&);

    void CmButton1()

    {

    nColor=1;

    Invalidate();

    UpdateWindow();

    }

    void CmButton2()

    {

    nColor=2;

    Invalidate();

    UpdateWindow();

    }

    DECLARE_RESPONSE_TABLE(TMyWin);

    };

    DEFINE_RESPONSE_TABLE1(TMyWin,TFrameWindow)

    EV_COMMAND(CM_BUTTON1,CmButton1),

    EV_COMMAND(CM_BUTTON2,CmButton2),

    END_RESPONSE_TABLE;

    void TMyWin::Paint(TDC &dc,BOOL,TRect&)

    {

    TColor color(nColor==1 ? TColor::LtBlue : TColor::LtYellow);

    TPen pen1(color);

    dc.SelectObject(pen1);

    dc.Rectangle(pn,pk);

    TPen pen2(nColor==1 ? TColor::Black : TColor::LtRed);

    dc.SelectObject(pen2);

    dc.Ellipse(pn,pk);

    }

    class TMyApp : public TApplication

    {

    public:

    TMyApp():TApplication()

    {}

    void InitMainWindow()

    {

    MainWindow=new TMyWin();

    }

    };

    int OwlMain(int, char *[])

    {

    TMyApp app;

    return app.Run();

    }

    8.2.2. Пояснения к программе

    Заголовочный файл owl\button.h содержит описание класса TButton и его

    членов.

    В начало программы помещены директивы

    #define CM_BUTTON1 100

    #define CM_BUTTON2 200,

    определяющие константные идентификаторы сообщений, которые будут

    посылаться программе кнопками в ответ на щелчки мышью. CM_BUTTON1

    генерируется первой кнопкой, CM_BUTTON2 - второй. Можно выбрать другие

    имена сообщений, отличные от CM_BUTTONn и значения констант, отличные от

    приведенных в программе, но для того, чтобы программа правильно реагировала

    на сообщения кнопок, необходимо правильно заполнить таблицу реакций,

    передав в качестве аргументов макросам таблицы имена констант и имена

    функций отклика.

    Конструктор прикладного окна создает с помощью оператора new две кнопки,

    передавая им в качестве аргументов идентификатор окна, идентификатор

    уведомляющего сообщения, которое будет генерировать кнопка, текст надписи

    на кнопке и координаты размещения кнопки в окне приложения.

    Обратите внимание на то, что адреса созданных объектов-кнопок не

    присваиваются указателям. Этого не требуется делать потому, что в программе

    нет необходимости ссылаться на эти объекты.

    Функции отклика на сообщения кнопок CmButton1 и CmButton2 изменяют

    признак цвета геометрических фигур и объявляют о необходимости перерисовки

    окна приложения.

    Таблица отклика конструируется так же, как это делалось при

    использовании меню. Она содержит идентификаторы уведомляющих сообщений,

    приходящих от кнопок и имена функций класса прикладного окна, отвечающих за

    обработку данных сообщений.

    8.2.3. Задание.

    1) Создать приложение и исследовать его работу.

    2) Изменить аргументы конструктора (текст кнопки, координаты, размер и

    т. д.) TButton одной из кнопок.

    3) Исследуйте работу приложения, закомментировав вызов Invalidate в

    одной из функций отклика.

    9. Ввод и редактирование текста

    Данная тема будет посвящена панелям ввода и редактирования - одной из

    популярнейших компонент Windows.

    Использование панели ввода и редактирования текста позволяет приложению

    ввести и при необходимости отредактировать одну или несколько строк текста.

    Панель редактирования создается, как объект класса TEdit и может быть

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

    стандартный текстовый редактор Windows, в котором доступны все операции

    редактирования текста - вставка и замена текста, удаление символов и работа

    с буфером обмена Windows.

    Различают два типа панелей редактирования - однострочная и

    многострочная.

    Создание панелей редактирования и размещение их в окне приложения

    осуществляются аналогично созданию кнопок и полос прокрутки. Объект

    создается из класса TEdit. Конструктору объекта передается идентификатор

    окна, в котором будет размещена панель, константный идентификатор панели,

    текст, который будет помещен в редактор и координаты панели в окне

    приложения. Дополнительно конструктору передается стиль панели

    редактирования: TRUE, если создается многострочная панель, FALSE, если

    панель - однострочная (см раздел 10.7).

    9.1. Пример использования однострочного текстового редактора для ввода и

    редактирования текста

    Приведенное в этом разделе приложение создает однострочный текстовый

    редактор и выводит копии этой строки в окне приложения.

    9.1.1. Исходный текст приложения

    #include

    #include

    #include

    #include

    #include

    #define ID_ONELINER 150

    #define CM_BUTTON 160

    #define TEXTLEN 10

    class TMyWin: public TFrameWindow

    {

    TEdit *oneLiner;

    char txt[TEXTLEN];

    public:

    TMyWin(): TFrameWindow(0,"the TEdit object")

    {

    oneLiner=new TEdit(this,ID_ONELINER,"Input one

    line",10,10,100,30,TEXTLEN,FALSE);

    new TButton(this,CM_BUTTON,"Update",10,100,70,25);

    txt[0]='\0';

    }

    protected:

    void CmButton();

    void Paint(TDC&,BOOL,TRect&);

    DECLARE_RESPONSE_TABLE(TMyWin);

    };

    DEFINE_RESPONSE_TABLE1(TMyWin,TFrameWindow)

    EV_COMMAND(CM_BUTTON,CmButton),

    END_RESPONSE_TABLE;

    void TMyWin::CmButton()

    {

    oneLiner->GetLine(txt,TEXTLEN,0);

    Invalidate();

    //UpdateWindow();

    }

    void TMyWin::Paint(TDC& dc,BOOL,TRect&)

    {

    for (int i=1;i

    #include

    #include

    #include

    #include

    #define ID_MULTILINER 150

    #define CM_BUTTON 160

    class TMyWin: public TFrameWindow

    {

    TEdit *multiLiner;

    char *txt;

    public:

    TMyWin(): TFrameWindow(0,"the TEdit object")

    {

    multiLiner=new TEdit(this,ID_MULTILINER,"Input

    lines",10,10,200,100,0,TRUE);

    new TButton(this,CM_BUTTON,"Update",10,130,70,25);

    }

    protected:

    void CmButton();

    void Paint(TDC&,BOOL,TRect&);

    DECLARE_RESPONSE_TABLE(TMyWin);

    };

    DEFINE_RESPONSE_TABLE1(TMyWin,TFrameWindow)

    EV_COMMAND(CM_BUTTON,CmButton),

    END_RESPONSE_TABLE;

    void TMyWin::CmButton()

    {

    Invalidate();

    //UpdateWindow();

    }

    void TMyWin::Paint(TDC& dc,BOOL,TRect&)

    {

    for (int i=1;iGetNumLines();i++)

    {

    int lineLength= multiLiner->GetLineLength(i-1);

    txt= new char[lineLength];

    multiLiner->GetLine(txt,lineLength,i-1);

    dc.TextOut(250,50+i*20,txt);

    delete txt;

    }

    }

    class TMyApp:public TApplication

    {

    public:

    TMyApp(): TApplication(){};

    void InitMainWindow()

    {

    MainWindow=new TMyWin();

    }

    };

    int OwlMain(int,char *[])

    {

    return TMyApp().Run();

    }

    9.2.2. Задание

    1) Сравните листинги программ, приводимые в 9.2.1 и в 9.1.1, уделив

    особое внимание на различия в конструировании однострочной и многострочной

    панелей редактирования.

    2) Создайте и выполните приложение.

    3) Создайте элемент меню прикладного окна, вызывающий однострочный или

    многострочный элемент редактирования.

    9.3. Немного английского

    to edit - редактировать

    GetLine - to get a line - получить строку

    GetLineLength - to get a line length - получить длину строки

    10. Приложение. Классы библиотеки OWL.

    10.1. Иерархия классов библиотеки OWL, используемых в пособии

    [pic]

    10.2. Класс TApplication

    Производный от класса TModule. Используется для порождения класса для

    объекта-приложения Windows.

    Класс TApplication содержит 7 членов-данных и 35 членов-функций, из

    которых в данном пособии используются:

    10.2.1. Член-данное:

    TFrameWindow *MainWindow; public

    Указатель на главное окно приложения.

    10.2.2. Член-функции:

    virtual void InitApplication();

    protected

    Выполняет любую инициализацию, необходимую только для первого экземпляра

    приложения. По умолчанию InitApplication ниего не выполняет.

    virtual void InitInstance();

    protected

    Выпоняется для каждого экземпляра приложения. InitInstance вызывает

    InitMainWindow, а затем создает и высвечивает на экране главное окно путем

    вызова соответственно TWindow::Create и TWindow::Show.

    virtual int Run(); public

    Инициализирует экземпляр приложения, вызывая InitApplication для первого

    экземпляра и InitInstance для всех остальных. Если инициализация прошла

    успешно, Run вызывает MessageLoop и запускает приложение.

    virtual void InitMainWindow();

    protected

    По умолчанию InitMainWindow создает обобщенный объект - главное окно с

    именем приложения в качестве заголовка. Для создания требуемого главного

    окна необходимо переопределить InitMainWindow, не забыв сделать ссылку в

    MainWindow на созданное главное окно (класса TFrameWindow).

    TAplication( const far*name=0);

    public

    Этот конструктор создает объект класса TApplication.

    name - указатель на имя приложения.

    Этот конструктор используется в теле функции OwlMain.

    10.3. Класс TFrameWindow

    Производный от TWindow. Управляет поведением главного окна посредством

    управления клавиатурой и обработкой команд меню.

    Класс TFrameWindow содержит 4 член-данных и 25 член-функций, из которых

    в данном пособии используются:

    10.3.1. Член-функции:

    virtual BOOL AssignMenu(TResId menuId); public

    Устанавливает Attr.Menu равным аргументу menuId и удаляет предыдущее

    меню окна

    void SetupWindow(); protected

    Вызывает TWindow::SetupWindow() для создания окон в списке потомков.

    SetupWindow() выполняет начальную подготовку пользовательского окна, если

    оно существует, связывает меню рамки с ресурсом меню.

    TFrameWindow(TWindow *parent, const char far *title=0, TWindow

    *clientWnd=0, BOOL shrinkToClient=FALSE, TModule *module=0);

    public

    Создает объект-окно с окном предком, на которое указыывает parent.

    Устанавливает позиции и поля размеров структуры Attr равными стандартным

    значениям.

    title - имя заголовка создаваемого окна.

    10.4. Класс TWindow

    Производный от классов TEventHandler и TStreamableBase. Обеспечивает

    специфическое поведение окон.

    Класс TWindow содержит 12 член-данных и 175 член-функций, из котрых в

    данном пособии используются:

    10.4.1. Член-данные:

    TWindowAttr Attr; public

    Сохраняет структуру TWindowAttr, содержащую атрибуты создания окна.

    TWindow *parent; public

    Указывает на интерфейсный объект, служащий окном-предком для данного

    интерфейсного объекта.

    char far *title; public

    Указываетна заголовок окна.

    10.4.2. Член-функции:

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

    public

    Конструктор класса TWindow. Добавляет this к списку окон-потомков

    parent, если this не 0.

    Также устанавливает заголовок окна title и инициализирует атрибуты

    создания окна.

    virtual BOOL CanClose();

    public

    Возвращает TRUE, если ассоциированный интерфейсный элемент может быть

    закрыт. Иначе возвращает FALSE.

    inline TApplicacion*GetApplication();

    public

    Получает указатель на объект TApplication, связанный с this.

    int MessageBox(const far*text, const char far* caption=0, UINT

    type=MB_OK); public

    Создет и выводит окно сообщений, содержащее сообщение text, заголовок

    caption и пиктограммы или кнопки type.

    Тип type может содержать комбинации констант MB_XXX: IDABORT, IDCANCEL,

    IDIGNORE, IDNO, IDOK, IDRETRY, IDYES.

    virtual void Paint(TDC& dc, BOOL erase, TRect& rect);

    public

    Вызывается базовыми классами при реагировании(отклике) на сообщение

    WM_PAINT.

    Paint вызывается с помощью EvPaint и автоматически запрашивается

    системой Windows для повторного вывода содержимого окна.

    dc является контекстом отображения рисования, передаваемым функциям

    рисования тек ста и графического вывода.

    Заданная ссылка на структуру TRect представляет собой ограничивающий

    прямоугольник области, требующей перерисовки.

    erase показывает, нужно ли стирать фон.

    10.5. Класс TDC

    Является корневым классом для вспомогательных классов контекстов

    устройств GDI. Класс TDC содержит 8 член-данных и 149 член-функций, из

    которых в данном пособии используются:

    10.5.1. Член-функции:

    inline BOOL Ellipse(int x1, int y1, int x2, int y2);

    public

    inline BOOL Ellipse(const TPoint& p1, const TPoint& p2);

    Рисует и заполняет эллипс в данном контексте, используя выбранные

    объекты - перо и кисть. Центр эллипса - центр ограничивающего

    прямоугольника.

    Возвращает TRUE, если вызов успешный, иначе - FALSE.

    inline BOOL Rectangle(int x1, int y1, int x2, int y2);

    public

    inline BOOL Rectangle(const TPoint& point, const TSize& size);

    inline BOOL Rectangle(const TRect& rect);

    Рисует и заполняет прямоугольник заданного размера в данном контексте с

    использованием текущего пера и кисти.

    Возвращает TRUE при успешном завершении и FALSE в противном случае.

    void SelectObject(const TPen& pen);

    public

    Выбирает заданное перо в заданном контексте устройства. Выбранный ранее

    объект сохраняется в соответствующем элементе данных.

    inline virtual TColor SetTextColor(TColor color);

    public

    Устанавливает текущий цвет текста в данном контексте в заданное значение

    color. Цвет текста определяет цвет, используемый в TDC::TextOut.

    inline virtual BOOL TextOut(int x, int y, const char far* string, int

    count=-1); public

    inline virtual BOOL TextOut(const TPoint& point, const char far* string,

    int count=-1);

    Рисует до count символов заданной, заканчивающейся нулем, строки

    string в данном контексте устройства. Если count=-1(по умолчнию), рисуется

    вся строка. Аргументы x,y задают логические координаты опорной точки,

    которая используется для выравнивания первого символа.

    10.6. Класс TScrollBar

    Объекты типа TScrollBar представляют самостоятельные вертикальные и

    горизонтальные линейки прокрутки. Большинство член-функций TScrollBar

    управляют позицией и диапазоном перемещения бегунка линейки прокрутки.

    Класс TScrollBar содержит 2 член-данных и 18 член-функций, из которых в

    даном пособии используются:

    10.6.1. Член-функции:

    TScrollBar(TWindow* parent, int id, int x, int y, int w, int h, BOOL

    isHScrollBar, TModule* module=0);

    public

    Создает и инициализирует объект типа TScrollBar в заданном окне с

    идентификатором id, в позиции x,y и размерами w,h. Если isHScrollBar равен

    TRUE, то создается горизонтальная линейка прокрутки, иначе - вертикальная.

    inline virtual int GetPosition();

    public

    Возвращает текущую позицию бегунка линейки прокрутки.

    inline virtual void SetRange(int min, int max);

    public

    Устанавливает линейку прокрутки в диапазоне от min до max.

    10.7. Класс TEdit

    Класс TEdit используется при создании объекта “панель редактирования”.

    TEdit является производным от класса TStatic, который в свою очередь

    порожден от класса TControl.

    Существует две разновидности панели редактирования - однострочная и

    многострочная. Являясь интерфейсным элементом, панель редактирования

    позволяет ввести текст и редактировать его.

    Член-функции класса TEdit обрабатывают текст панели редактирования.

    Класс TEdit содержит 1 член-данное и 52 член-функции, из которых в

    данном пособии используются:

    TEdit(TWindow *parent, int id, const char far *text, int x, int y, int

    w, int h, UINT textlen, BOOL multiline=FALSE, TModule *module=0);

    public

    Конструирует панель редактирования в окне parent, задавая идентификатор

    панели id, местоположение x,y и размеры панели w,h, длину вводимого текста

    textlen. Аргумент multiline задает вид панели редактирования(однострочная

    или многострочная).

    BOOL GetLine(char far* str, int strSize, int lineNumber);

    public

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

    и возвращает ее в строке str, заканчивающейся нулем.

    strSize задает количество получаемых символов.

    int GetLineLength(int lineNumber);

    public

    Возвращает количество символов в строке, заданной номером lineNumber.

    inline int GetNumLines();

    public

    Возвращает количество строк, введенных в многострочную панель

    редактирования. Возвращает нуль, если текст отсутствует.

    ЛИТЕРАТУРА

    1. Справочник по библиотеке ObjectWindows 2.0 для C++. / Сост. Э.Н.

    Боровая и др. - Киев: “Диалектика”, 1995 - 494 с.

    2. Том Сван. Программирование для Windows в Borland C++. Пер. с англ. -

    М: БИНОМ, 1995 - 480 с.

    Страницы: 1, 2, 3


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.