Borland C++ для Windows - реферат

ПРОГРАММИРОВАНИЕ ДЛЯ WINDOWS НА BORLAND C++

1. Введение

Цель данного пособия - облегчить усвоение программирования для Windows на BORLAND C++ и содействовать распространению библиотеки OWL (Object Windows Library), которая отлично обмыслена и внедрение которой очевидно вырисовывает плюсы объектно-ориентированного программирования - инкапсуляции, наследования и полиморфизма.

Пособие привязано к лекционному курсу “Разработка программирования”, требуя познаний Borland C++ для Windows - реферат изложенных на лекциях основ объектно-ориентированного программирования на C++ и предназначено как управление к лабораторным работам по этому лекционному курсу.

Пособие нацелено на пошаговую разработку за компом легких Windows-приложений, в процессе которой осуществляется их исследование методом сопоставления разных вариантов реализации, конфигурации характеристик членов-функций и значений членов Borland C++ для Windows - реферат-данных применяемых классов.

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

1.1. Ввод, редактирование и пуск Windows-приложения

Чтоб ввести начальный текст программки, откомпилировать и узреть на дисплее окно Borland C++ для Windows - реферат Windows-приложения, нужно выполнить последующие деяния:

1) Сделайте двойной щелчок левой кнопки мыши (либо нажатие ENTER) на пиктограмме Borland C++. Появится окно компилятора BC4.

2) Щелчок левой кнопки мыши на элементе меню Project (либо переход в строчку меню методом нажатия F10, поиск и высвечивание элемента Project при помощи кнопок ¬ и Borland C++ для Windows - реферат ®. Раскрыть Project при помощи кнопки ENTER).

3) Щелчок мышью на команде New project (либо избрать данный пункт меню при помощи кнопок ­ и ¯ и надавить ENTER). В предстоящем ради сокращенности будем гласить, что необходимо выполнить команду Project|New project (команду New project из меню Project).

Таким макаром, будет выполнена Borland C++ для Windows - реферат команда сотворения нового проекта и на дисплее появится последующий диалог.

4) Щелчок мышью на кнопке Browse для просмотра каталога.

5) Воспользовавшись линейкой прокрутки, отыскать имя требуемого каталога и сделать на нем двойной щелчок левой кнопки мыши.

6) В поле File Name ввести имя проекта с расширением .ide, потом надавить ENTER.

7) Нажмите кнопку Advanced и Borland C++ для Windows - реферат снимите флажки rc и def в показавшемся диалоге Advanced Options, потом нажмите OK.

8) В диалоге сотворения проекта нажмите кнопку OK.

9) Сделайте двойной щелчок левой кнопкой мыши на названии файла с расширением cpp в окне сделанного проекта, в итоге чего раскроется окно для редактирования текста программки.

10) Введите начальный текст программки Borland C++ для Windows - реферат.

11) Для компиляции и выполнения нажмите Ctrl-F9.

12) Если получены сообщения об ошибках, то исправьте их и проведите компиляцию поновой. Если ошибки отсутствуют, то на дисплее появится окно Вашего Windows-приложения. Произведите диалог с приложением, используя мышь.

1.2. Главные приемы редактирования текста в встроенной среде BORLAND C++

1.2.1. Копирование и удаление части Borland C++ для Windows - реферат текста в окне редактирования

Для копирования текста из одной его части в другую производятся последующие деяния:

1) Выделить копируемый текст:

а) Подвести курсор к началу копируемого текста.

б) Надавить и задерживать кнопку Shift.

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

г) Отпустить Shift.

2) Занести выделенный текст в буфер обмена Borland C++ для Windows - реферат (Clipboard) методом одновременного нажатия Ctrl и Ins либо выполнения команды Edit|Copy.

3) Перевести курсор к месту вставки текста.

4) Перенести текст из буфера в редактор методом одновременного нажатия Shift и Ins либо выполнения Edit|Paste.

1.2.2. Копирование содержимого ранее сделанного cpp-файла в окно редактирования

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

1) Сделайте команду Borland C++ для Windows - реферат File|Open.

2) В показавшемся диалоговом окне изберите требуемый файл и нажмите OK. Раскроется окно с содержимым обозначенного файла.

3) При помощи вышеперечисленных действий выделите требуемый кусок текста либо сделайте Edit|Select All для выделения всего текста в окне редактирования.

4) Сделайте Edit|Copy либо нажмите Ctrl-Ins для копирования Borland C++ для Windows - реферат выделенного текста в буфер обмена.

5) Если открытый файл больше не нужен, закройте окно. Это делается двойным щелчком левой кнопки мыши на кнопке системного меню окна. Можно сделать один щелчок мыши и в показавшемся меню избрать Close.

6) Сделайте Edit|Paste либо нажмите Shift-Ins для вставки текста из буфера в окно Borland C++ для Windows - реферат редактирования.

2. Создание простого приложения

Для усвоения работы с компилятором BORLAND C++ сделаем несколько вариантов простого Windows-приложения, которое делает окно с заголовком. Заголовок окна содержит надпись “Hello, Windows !” либо “Hello, Hello !”. Окно также содержит кнопки минимизации и максимизации, также системное меню приложения.

2.1. Создание объекта приложения снутри функции OwlMain

При написании Borland C++ для Windows - реферат программки будем работать с классом TApplication и функцией OwlMain. В данном варианте программки объект класса TApplication создается снутри функции OwlMain.

2.1.1. Начальный текст приложения

#include

int OwlMain(int, char* [])

{

TApplication app("Hello, Windows !");

return app.Run();

}

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

Заголовочный файл owl\applicat.h содержит описание класса TApplication (см. Раздел 10.2.).

app Borland C++ для Windows - реферат - объект класса TApplication. При разработке этого объекта употребляется неявный вызов конструктора, устанавливающего текст заголовка прикладного окна “Hello, Windows !”.

app.Run() - вызов члена-функции класса TApplication для объекта app. Функция TApplication::Run() запускает приложение.

2.1.3. Задание

1) Сделать и выполнить приложение, убедившись в корректности функционирования кнопок максимизации и минимизации окна Borland C++ для Windows - реферат.

2) Передвинуть окно в другое место экрана.

3) Плавненько поменять высоту и ширину окна при помощи мыши.

4) Закрыть приложение.

5) Поменять начальный текст приложения, заменив заголовок окна на “Hello, Hello !”. Убедиться в возникновении окна с новым заголовком.

2.1.4. Малость британского

an application - приложение

to run - производиться

a window - окно

Windows - заглавие системы Windows

OWL - Object Windows Borland C++ для Windows - реферат Library - библиотека классов Windows

to include - включать

main - основной, главный

to return - возвращать, ворачиваться

2.2. Динамическое создание объекта класса TApplication

В этом варианте приложения объект класса TApplication динамически создается в свободной области памяти.

2.2.1. Начальный текст приложения

#include

int OwlMain(int, char* [])

{

TApplication *app;

app=new TApplication(" Hello Windows !");

return app->Run();

}

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

app - указатель на Borland C++ для Windows - реферат объект типа TApplication.

Оператор new выделяет участок в свободной области памяти под объект класса TApplication. При всем этом неявный вызов конструктора инициализирует объект приложения и устанавливает текст заголовка в “Hello, Windows !”.

2.2.3. Задание

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

2.3. Кратчайший вариант Windows-приложения

2.3.1. Начальный текст приложения

#include

int OwlMain(int Borland C++ для Windows - реферат, char* [])

{

return TApplication(" Hello Windows !").Run();

}

2.3.2. Задание

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

3. Внедрение класса TFrameWindow для сотворения головного окна

Класс TFrameWindow является производным от TWindow и обеспечивает функционирование головного окна приложения.

3.1. Создание объекта головного окна

В нижеследующем приложении член-функция InitMainWindow класса TApplication при помощи оператора new и Borland C++ для Windows - реферат конструктора TFrameWindow делает объект - главное окно приложения. Адресок объекта помещается в переменную MainWindow объекта приложения.

3.1.1. Начальный текст программки

#include

#include

class TMyApp: public TApplication

{

public:

TMyApp():TApplication("Hello Windows !"){};

void InitMainWindow()

{

MainWindow=new TFrameWindow(0,"Hello, hello!!");

}

};

int OwlMain(int, char* [])

{

return TMyApp().Run();

}

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

Включаемый заголовочный Borland C++ для Windows - реферат файл owl\framewin.h содержит описание класса TFrameWindow (см. раздел 10.3.).

Так как в данном варианте приложения мы желаем сделать свое собственное главное окно в обход стандартных способов класса TApplication, мы должны переопределить виртуальную функцию InitMainWindow класса TApplication. Для этого мы выводим новый, уже наш, класс TMyApp, как производный от класса TApplication и Borland C++ для Windows - реферат описываем в нем виртуальную функцию InitMainWindow.

Тело конструктора TMyApp пустое, т.е. {}. Работа этого конструктора сводится только к вызову конструктора базисного класса TApplication, содержащего единственный параметр - текст заголовка головного окна приложения (см. раздел 10.2.2).

Тело функции InitMainWindow класса TMyApp содержит оператор new, который вместе с конструктором TFrameWindow делает экземпляр объекта Borland C++ для Windows - реферат-окна с новым заголовком “Hello, Hello !”. Адресок объекта присваивается переменной MainWindow (см. раздел 10.2.1.), унаследованной от TApplication.

3.1.3. Задание

1) Сделать и выполнить приложение. Направьте внимание! Заместо заголовка “Hello, Windows !”, данного конструктором TMyApp, окно имеет заголовок “Hello, Hello !”. Это итог работы переопределенной виртуальной функции TMyApp::InitMainWindow, которая была вызвана после конструктора и Borland C++ для Windows - реферат изменила текст заголовка на “Hello, Hello !”.

2) Измените тексты заголовков, применяемые конструкторами TMyApp и TFrameWindow.

3) Измените статус доступа к членам класса TMyApp на protected либо private . Удостоверьтесь, что появятся сообщения об ошибках компиляции, потому что в функции OwlMain делается воззвание к сейчас уже труднодоступному конструктору TMyApp.

4) Опишите конструктор TMyApp вне Borland C++ для Windows - реферат класса, не забыв добавить при его описании оператор привязки к классу TMyApp. Удостоверьтесь в работоспособности приложения.

5) Опишите член-функцию InitMainWindow вне класса. Проверьте работоспособность приложения.

3.2. Изменение положения головного окна на дисплее

Класс TFrameWindow наследует из класса TWindow (см. раздел 10.4.) член-данное Attr( см. раздел 10.4.1.). Attr - это структура, содержащая Borland C++ для Windows - реферат разные атрибуты окна, такие как стиль окна, позиция на дисплее, размер и т.д.

3.2.1. Варианты функции InitMainWindow, использующие Attr

Вариант A:

void InitMainWindow()

{

MainWindow=new TFrameWindow(0," Hello, hello!!");

MainWindow->Attr.X=5;

MainWindow->Attr.Y=15;

MainWindow->Attr.W=200;

MainWindow->Attr.H=100;

}

Вариант B:

void InitMainWindow()

{

MainWindow=new TFrameWindow(0," Hello, hello Borland C++ для Windows - реферат!!");

MainWindow->Attr.X=GetSystemMetrics(SM_CXSCREEN)/8;

MainWindow->Attr.Y=GetSystemMetrics(SM_CYSCREEN)/8;

MainWindow->Attr.W=MainWindow->Attr.X*6;

MainWindow->Attr.H=MainWindow->Attr.Y*6;

}

3.2.2. Пояснение к вариантам использования функции InitMainWindow

Указатель MainWindow показывает на главное окно приложения, сделанное оператором new и конструктором TFrameWindow. Указатель употребляется для ссылки Borland C++ для Windows - реферат на элементы структуры Attr головного окна приложения.

X,Y задают положение левого верхнего угла окна на дисплее.

W и H задают ширину и высоту окна в пикселах.

Функция GetSystemMetrics возвращает значения разных черт системы, таких как высота (SM_CYSCREEN) и ширина (SM_CXSCREEN) экрана.

3.2.3. Задание

1) Сделать приложение с вариантом A Borland C++ для Windows - реферат функции InitMainWindow. Проверьте работоспособность приложения.

2) Сделать приложение с вариантом A написания функции инициализации, но с другими значениями частей X,Y,W,H структуры Attr.

3) Сделать приложение с вариантом B написания функции InitMainWindow. Убедиться, что окно располагается в центре экрана.

3.3. Малость британского

Attr - Attribute - атрибут, свойство признак.

GetSystemMetrics - to Borland C++ для Windows - реферат Get System Metrics - получить системные свойства.

a screen - экран

a frame - рамка

a frame window - обрамляющее окно

InitMainWindow - Initialization of Main Window - инициализация головного окна.

to create - создавать

to show - показать

4. Программирование с таблицами отклика

Одним из главных моментов работы Windows-приложения является тот факт, что работа программки управляется событиями. Примером событий в Windows является выбор пт Borland C++ для Windows - реферат меню либо нажатие на кнопку в окне программки.

Система сохраняет информацию о произошедшем событии в системной очереди сообщений, а потом передает сообщение о нем работающей программке. При написании Windows-приложения нужно обеспечить обработку сообщений, поступающих в программку. Если же этого не сделать, то любые деяния юзера над окном Borland C++ для Windows - реферат программки будут проигнорированы и Вы не можете работать с меню и т.д. Пусть, к примеру, в окне программки была нажата левая кнопка мыши. В данном случае программка получит сообщение WM_LBUTTONDOWN. Все сообщения Windows, передаваемые программке, представляют собой целочисленные константы с именами, начинающимися с WM_ (Windows Message, т.е Borland C++ для Windows - реферат. сообщение Windows).

В программках, написанных с применением OWL, механизм получения инфы о произошедших в системе событиях укрыт от программера и обеспечивается функциями класса TApplication. Программеру требуется только обрисовать свои функции, которые будут автоматом вызываться в ответ на пришедшее в программку сообщение.

Для того, чтоб сделать класс Borland C++ для Windows - реферат, функции которого будут отзываться на пришедшие из системы сообщения, нужно:

1) Найти таблицу отклика для класса. Для этого в определение класса вставляется строчка

DECLARE_RESPONSE_TABLE();

заменяется на имя того класса, для которого определяется таблица отклика. DECLARE_RESPONSE_TABLE - это макрос OWL, который вводит в Ваш класс некие дополнительные элементы, дозволяющие системе автоматом Borland C++ для Windows - реферат вызывать функции-члены класса в ответ на пришедшее сообщение. Таблица отклика содержит имена сообщений Windows и адреса функций, вызываемых при получении соответственных сообщений.

2) После объявления класса в текст программки вставляется другой макрос

DEFINE_RESPONSE_TABLEn([,класс][,класс]...);

- все то же имя класса, для которого Вы строите таблицу отклика Borland C++ для Windows - реферат. Через запятую Вы должны перечислить имена базисных классов, от которых делается наследование. Число n следует поменять на число базисных классов, которые тоже содержат таблицы отклика.

Сразу за текстом макроса нужно поместить элементы таблицы реакции, разбитые запятыми. Так, если Вы желаете обрабатывать сообщения о нажатиях правой и левой кнопок мыши в окне Вашего Borland C++ для Windows - реферат приложения, то в таблицу помещаются последующие элементы:

EV_WM_LBUTTONDOWN,

EV_WM_RBUTTONDOWN,

которые молвят OWL о том, что Вы желаете обрабатывать сообщения о нажатиях левой и правой кнопок соответственно. Скажем EV_WM_LBUTTONDOWN расшифровывается, как Event (событие), Windows Message: Left Button Down.

После описания всех Borland C++ для Windows - реферат частей таблицы реакции запишите строчку END_RESPONSE_TABLE;

3) Обусловьте в Вашем классе функции, которые будут получать управление, если в системе произойдет хотимое событие. В нашем примере - это две функции

void EvLButtonDown(UINT,TPoint&),

void EvRButtonDown(UINT,TPoint&)

1-ый аргумент определяет клавиши-модификаторы, которые были нажаты на клавиатуре сразу с нажатием одной Borland C++ для Windows - реферат из кнопок мыши. 2-ой аргумент определяет координаты точки окна, в какой было произведено нажатие. В тело этих функций можно воткнуть код, реализующий некие деяния при получении соответственных сообщений Windows.

При написании функций отклика нужно держать в голове последующее:

1) Функция отклика вызывается OWL автоматом и только тогда, когда произойдет Borland C++ для Windows - реферат данное событие. Например, функция EvLButtonDown вызывается только тогда, когда юзер нажмет левую кнопку мыши снутри окна приложения.

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

3) Имена и характеристики функций, отвечающих на системные сообщения, предопределены. Это значит, что на каждое Borland C++ для Windows - реферат сообщение отвечает строго определенная функция с определенным именованием. Другими словами, если Вы желаете обрабатывать нажатия левой кнопки мыши, то в классе нужно найти функцию с именованием EvLButtonDown.

4.1. Отклик на нажатие левой и правой кнопок мыши

Нижеследующее Windows-приложение делает прикладное окно и ждет нажатия правой либо левой кнопки мыши Borland C++ для Windows - реферат. При нажатии хоть какой из этих кнопок снутри окна возникает панель сообщения, указывающая, какая кнопка была нажата. После нажатия на кнопку OK панель исчезает, а приложение будет ожидать нового нажатия на кнопки мыши.

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

#include

#include

class TMyWindow : public TFrameWindow

{

public:

TMyWindow(char *title):TFrameWindow(0,title)

{}

protected:

void Borland C++ для Windows - реферат EvLButtonDown(UINT,TPoint&);

void EvRButtonDown(UINT,TPoint&);

DECLARE_RESPONSE_TABLE(TMyWindow);

};

DEFINE_RESPONSE_TABLE1(TMyWindow,TFrameWindow)

EV_WM_LBUTTONDOWN,

EV_WM_RBUTTONDOWN,

END_RESPONSE_TABLE;

void TMyWindow::EvLButtonDown(UINT,TPoint&)

MB_ICONINFORMATION);

void TMyWindow::EvRButtonDown(UINT,TPoint&)

MessageBox("You have pressed the RIGHT mouse button","Message dispatched",MB_OK

class TMyApp Borland C++ для Windows - реферат : public TApplication

{

public:

TMyApp():TApplication()

{}

void InitMainWindow()

{

EnableCtl3d();

MainWindow=new TMyWindow("Click Me!!!!!");

}

};

int OwlMain(int, char *[])

{

TMyApp app;

return app.Run();

}

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

Класс TMyWin обрисовывает прикладное окно, как главное окно приложения и потому порождается от класса TFrameWindow.

Не считая описания конструктора класс содержит объявления стандартных функций отклика Borland C++ для Windows - реферат EvLButtonDown и EvRButtonDown, а так же объявление таблицы отклика для класса.

Прямо за описанием класса размещается описание таблицы отклика на сообщения от левой и правой кнопок мыши.

Функции отклика описаны вне класса. Тело каждой из этих функций содержит единственный вызов функции MessageBox, которую TMyWin наследует от Borland C++ для Windows - реферат TFrameWindow. Аргументы функции MessageBox задают текст сообщения, заголовок панели и стиль окна сообщения. Стили MB_OK и MB_ICONINFORMATION дают нам диалоговую панель с кнопкой OK и пиктограммой “Information”:

Тело функции TMyApp::InitMainWindow содержит вызов функции EnableCtl3d(), которая разрешает приложению использовать трехмерные диалоги. Вы сможете закомментировать вызов этой функции Borland C++ для Windows - реферат и сопоставить приобретенные результаты.

4.1.3. Задание

1) Сделать и выполнить приложение. Поэкспериментировать с приложением, нажимая кнопки мыши в его окне.

2) Измените аргументы в вызовах функции MessageBox. Удостоверьтесь в изменении внешнего облика панели сообщения.

3) Закомментируйте строчку EV_VM_RBUTTONDOWN в таблице частей отклика. Растолкуйте изменившееся поведение приложения.

4.1.4. Мало британского

a button - кнопка

down - вниз

left - на Borland C++ для Windows - реферат лево, левый

right - правый

an event - событие

a message - сообщение

a response - ответ

a table - таблица

to declare - объявить

to define - обрисовать

a box - блок, панель

5. Вывод графики в Windows

Вывод текстовой либо графической инфы в Windows связан с контекстом устройства DC. Рабочая зона окна связывается с контекстом устройства TClientDC. Перед выводом инфы мы должны сделать Borland C++ для Windows - реферат контекст устройства, передав ему идентификатор окна и избрать в нем набор нужных графических объектов, таких как перо (TPen), кисть(TBrush) и т. д. Нужно также позаботиться о цвете выводимых объектов. Сделанный контекст позволяет нам отрисовывать только снутри рабочей области окна, не затрагивая при всем этом ни другие окна, ни Borland C++ для Windows - реферат границы самого окна. Наличие в системе такового класса, как TDC, делает доступными более 150 функций, связанных с выводом оконной графики. Эти функции позволяют использовать разные объекты-инструменты (перо, кисть, шрифт и т. д.), выводить текст и отрисовывать разные фигуры.

5.1. Вывод координат точки нажатия левой кнопки мыши

Нижеследующее приложение откликается Borland C++ для Windows - реферат на щелчки левой кнопки мыши, выводя в рабочей зоне окна координаты указателя мыши в голубом цвете.

5.1.1. Начальный текст программки

#include

#include

#include

class TMyWindow : public TFrameWindow

{

public:

TMyWindow(char *title):TFrameWindow(0,title)

{}

protected:

void EvLButtonDown(UINT,TPoint&);

DECLARE_RESPONSE_TABLE(TMyWindow);

};

DEFINE_RESPONSE_TABLE1(TMyWindow,TFrameWindow)

EV_WM_LBUTTONDOWN,

END_RESPONSE_TABLE;

void Borland C++ для Windows - реферат TMyWindow::EvLButtonDown(UINT,TPoint &point)

{

TClientDC dc(HWindow);

TColor forecolor(TColor::LtCyan);

dc.SetTextColor(forecolor);

char buf[20];

wsprintf(buf,"[%d,%d]",point.x,point.y);

dc.TextOut(point.x,point.y,buf);

}

class TMyApp : public TApplication

{

public:

TMyApp():TApplication()

{}

void InitMainWindow()

{

MainWindow=new TMyWindow("Use the left mouse button Borland C++ для Windows - реферат");

}

};

int OwlMain(int, char *[])

{

TMyApp app;

return app.Run();

}

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

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

Класс TMyWin порождается от TFrameWindow и обрисовывает главное окно приложения. Не считая описания конструктора класс содержит объявление функции отклика EvLButtonDown на сообщение, поступающее Borland C++ для Windows - реферат при нажатии левой кнопки мыши, описание которой представляет больший энтузиазм.

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

Сначала тела функции создается объект контекста рабочей области головного окна приложения (Client area DC). В предстоящем Borland C++ для Windows - реферат объект употребляется для ссылки на функцию установки цвета текста SetTextColor и функцию вывода текста в окно TextOut. Данные функции являются членами класса TClientDC и унаследованы им от класса TDC (см. раздел 10.5.1).

Объект forecolor класса TColor употребляется для установки цвета шрифта в контексте окна.

Функция wsprintf конвертирует целочисленные значения координат x Borland C++ для Windows - реферат,y в их символьное представление в строке str. Приобретенная строчка выводится в окно функцией TextOut в позиции указателя мыши на дисплее.

Класс TMyApp обрисовывает класс приложения, из которого в функции OwlMain создается объект app. В классе описана функция InitMainWindow, создающая главное окно приложения на базе класса TMyWin.

5.1.3. Задание

1) Сделать Borland C++ для Windows - реферат и выполнить приложение. Поэкспериментировать с приложением, передвигая курсор мыши в рабочей зоне окна и нажимая на ее левую кнопку.

2) Переписать текст программки, используя для вывода текста другие цвета, к примеру Black, Gray, LtCyan, LtGray, TtGreen, LtMagenta, LtRed, LtYellow, White.

3) Измените текст приложения, формируя цвет текста, как совокупа Borland C++ для Windows - реферат случайных значений его компонент - красноватого, зеленоватого и голубого. Для этого поменяйте

TColor forecolor(TColor::LtBlue) на

TColor forecolor(random(255), random(255), random(255)).

Для использования random в начало программки воткните

#include

5.1.4. Малость британского

TDC - Type Device Context - тип контекста устройства

a device - устройство

a color - цвет

to set - устанавливать

SetTextColor - to Set a Text Color - установить цвет текста

a point - точка

6. Обновление Borland C++ для Windows - реферат содержимого окна

Огромным достижением Windows являются перекрывающиеся окна. Работая с системой, Вы сможете узреть на дисплее несколько окон, наложенных друг на друга. Вы сможете избрать одно из таких окон и двинуть его в сторону. В итоге на дисплее появится содержимое окон заднего плана. Но не следует считать Borland C++ для Windows - реферат, что Windows сохраняет массив пикселов каждого из окон, чтоб показывать их на дисплее, напротив, она поручает приложениям самим восстанавливать свои окна.

Если содержимое окна нуждается в восстановлении, Windows отправляет приложению-владельцу окна сообщение WM_PAINT. Если приложение имеет функцию отклика на это сообщение, то функция будет активизирована и перерисует окно, восстановив его Borland C++ для Windows - реферат внешний облик.

Итак, корректное Windows-приложение должно производить вывод в окно приложения только через виртуальную функцию Paint, вызываемую при приходе WM_PAINT.

Вы сможете просто убедиться в сказанном, запустив приложение, представленное в разделе 5.1.1. Расположите над окном данного приложения хоть какое другое прикладное окно и удалите его Borland C++ для Windows - реферат - рабочая область окна не восстановится. Так и должно быть, так как это приложение не имеет функции Paint.

Направьте внимание! Сама функция Paint не является функцией отклика на сообщение и для нее не нужно включать макрос сообщения в таблицу откликов. Paint нужно только переопределить в классе, производном от TWindow либо TFrameWindow.

6.1. Рисование Borland C++ для Windows - реферат в окне при помощи Paint

Нижеследующее приложение выдает в рабочую зону окна голубой прямоугольник с вписанным в него зеленоватым эллипсом. Вывод производит функция Paint.

6.1.1. Начальный текст приложения

#include

#include

#include

class TMyWin : public TFrameWindow

{

public:

TPoint pn,pk;

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

{

pn.x=100;

pn.y=50;

pk Borland C++ для Windows - реферат.x=300;

pk.y=200;

}

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

};

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);

}

class TMyApp : public TApplication

{

public:

TMyApp():TApplication()

{}

void InitMainWindow()

{

MainWindow Borland C++ для Windows - реферат=new TMyWin();

}

};

int OwlMain(int, char *[])

{

TMyApp app;

return app.Run();

}

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

Класс TMyWin обрисовывает главное окно приложения. Члены-данные pn и pk - объекты класса TPoint - созданы для хранения координат левого верхнего и правого нижнего углов прямоугольника.

Конструктор TMyWin, разрабатывая окно приложения, инициализирует значения pn и pk.

Объявление Borland C++ для Windows - реферат класса также содержит макет функции Paint. Операторы, расположенные в теле Paint, употребляют контекст устройства dc, передаваемый ей при вызове.

6.1.3. Задание

1) Сделать и выполнить приложение. Проверить его работу, изменяя размеры прикладного окна.

2) Поменять функционирование Paint, поместив в ее тело операторы

pk.x+=25;

pk.y+=15;

Поэкспериментируйте с приложением и растолкуйте поведение Borland C++ для Windows - реферат прикладного окна.

6.1.4. Мало британского

to paint - красить, перекрашивать, отрисовывать

a rectangle - прямоугольник

an ellipse - эллипс

to select - выбирать

SelectObject - to Select an Object - избрать объект

7. Создание меню

Окна практически каждого приложения содержат строчку меню, выбрав которое, мы получаем перечень команд. Всякую из этих команд можно выполнить, сделав щелчок на ней левой кнопкой мыши. При всем Borland C++ для Windows - реферат этом Windows отправляет соответственное сообщение приложению. Если приложение имеет подобающую функцию отклика, то оно сумеет отреагировать на команду меню.

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

EV_COMMAND(MENU_ITEM_ID,),

где MENU_ITEM_ID - постоянный идентификатор пт меню,

- имя функции отклика, которая будет активизироваться при Borland C++ для Windows - реферат выборе пт меню с данным идентификатором. В отличие от функций реакции на системные сообщения, функция отклика на команду меню может иметь хоть какое имя.

Направьте внимание. Для разработки данного приложения нужно сделать файл ресурсов с расширением .rc, в каком будет храниться описание ресурса меню программки, и Borland C++ для Windows - реферат файл с расширением .rh, в каком будут сохранены постоянные идентификаторы пт меню. Нет необходимости создавать данные файлы вручную. Для этого мы воспользуемся программкой Resource Workshop.

7.1. Создание ресурсов программки при помощи Resource Workshop

1. Запустите компилятор. Для этого активизируйте пиктограмму Borland C ++.

2. Сделайте команду Project|New project.

3. Как было описано ранее, изберите имя Borland C++ для Windows - реферат и путь к создаваемому проекту.

4. Изберите Advanced в диалоге New project. Потом в показавшейся панели снимите флаг def и установите флаг rc. Окончите создание проекта нажатием OK.

5. В итоге Ваших действий должно показаться окно проекта, содержащее два файла: один с расширением .cpp, другой - с расширением .rc, являющийся файлом ресурсов создаваемого Borland C++ для Windows - реферат проекта.

6. Сейчас можно приступить к созданию ресурсов нашего приложения, а конкретно, меню. В итоге проделанной работы Вы должны будете получить меню Size и два его пт - Large и Small. Они пригодятся нам в программке, которая будет выводить геометрические фигуры различных размеров по желанию юзера.

7. В окне Borland C++ для Windows - реферат проекта изберите файл с расширением .rc. В отличие от cpp-файлов, файлы с расширением .rc редактируются не в редакторе текста, а в спец редакторе ресурсов Resource Workshop. В его окне Вы можете узреть содержимое Вашего rc-файла, но на этот момент он пустой.

8. 1-ое, что нужно сделать - это добавить в проект Borland C++ для Windows - реферат ресурсов файл с расширением .rh (resource header, т. е. заголовок ресурсов). Это нужно для того, чтоб в собственной программке Вы могли ссылаться на сделанные ресурсы через rh-файл так же, как Вы ссылаетесь на библиотечные функции компилятора, описанные в файлах с расширением .h.

Для подключения файла сделайте File Borland C++ для Windows - реферат|Add to project. В показавшейся диалоговой панели в поле File type изберите RH, H header, а в поле File name введите имя собственного header-файла (в описании данной лабораторной работы было применено имя lab3c.rh, которое бытует в приведенных ниже листингах. Если Вы введете имя, хорошее от него, то Вы Borland C++ для Windows - реферат должны будете учесть это при включении файла в свою программку). Ответьте Yes на вопрос о необходимости сотворения файла.

9. Сейчас можно приступить к созданию меню нашего приложения. Для этого сделайте последующее:

1) Сделайте команду Resource|New из меню редактора ресурсов.

2) В перечне вероятных типов ресурсов панели New resource изберите Borland C++ для Windows - реферат MENU.

Удостоверьтесь, что поле Place identifiers in показывает на файл с расширением .rh. Поле Place resource in должно всегда указывать на Ваш rc-файл. Нажмите OK и Workshop приступит к созданию меню.

3) После проделанных шагов Вы должны узреть последующее:

Показавшееся окно представляет собой редактор меню. В заголовке Вы Borland C++ для Windows - реферат видите заглавие сделанного меню MENU_1. В правом верхнем углу окна размещается поле TEST MENU, которое позволяет проверить работу создаваемого меню. Строчка сделанного меню содержит заглавие раздела меню Pop-up (что значит всплывающий). При щелчке мышью на данном имени возникают пункты меню.

4) Нам необходимо получить пункт меню с именованием Size. Для этого Borland C++ для Windows - реферат щелкните мышью по имени Pop-up в поле тестирования меню, или на том же имени в описании меню в правом нижнем углу окна. Дальше, перейдите в поле Item text и переименуйте пункт меню из Pop-up в Size. Нажмите Enter и удостоверьтесь, что поле тестирования показало переименованный Borland C++ для Windows - реферат пункт меню.

5) Нам требуется сделать команду меню Small. Для этого в поле тестирования либо в окне описания меню изберите пункт Item. В поле тестирования это делается выбором пт Size и выбором в показавшемся меню поля Item.

6) Удостоверьтесь, что поле Item text вправду содержит текст “Item”. Перейдите в это поле и Borland C++ для Windows - реферат измените текст на “Small”. Проверьте, что в создаваемом меню отображается пункт Small.

7) В поле Item Id редактора меню введите имя постоянного идентификатора, который будет передаваться программке при выборе пт меню Small. Пусть это будет CM_SIZE_SMALL (CM значит Command, команда).

8) Сделаем сейчас пункт меню Large. Для начала Borland C++ для Windows - реферат проверьте, что в окне описания меню выделен пункт меню Small, т. к. создаваемый нами новый пункт меню должен показаться под ним. Потом сделайте команду меню редактора Menu|New menu item. Результатом работы команды будет новый пункт меню, который будет размещен под командой Small. При помощи обрисованных выше действий дайте пт Borland C++ для Windows - реферат меню имя Large и вчеркните идентификатор команды CM_SIZE_LARGE.

Направьте внимание! Нужно выбирать New menu item, а не New menu pop-up, который делает не команду, а пункт меню, который сам содержит свои команды и при активизации открывает вложенное в него меню.

9) Проверьте, что указывает поле тестирования сделанного Вами Borland C++ для Windows - реферат меню.

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

Нужно также отметить, что в header-файл, имя которого Вы указали сначала построения проекта, будут помещены имена постоянных идентификаторов пт меню CM_SIZE_SMALL и CM_SIZE_LARGE Borland C++ для Windows - реферат, также идентификатор меню MENU_1, на которые Вы будете ссылаться при написании программки.

7.2. Программирование с внедрением меню

Нижеследующее приложение употребляет команды Small и Large для управления выводом на экран фигур различного размера.

До этого, чем приводить текст программки покажем, что все-таки мы получили в итоге манипуляций над Resource Workshop.

7.2.1. Листинг Borland C++ для Windows - реферат 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-файл содержит внутри себя текстовое описание Borland C++ для Windows - реферат ресурсов и, как может показаться, легче написать его при помощи редактора текста. Это правильно только для обычных файлов ресурсов. Для написания же огромных программ лучше пользоваться способностями Resource Workshop.

7.2.3. Начальный текст приложения

#include

#include

#include

#pragma hdrstop

#include "lab3а.rh"

class TMyWin : public TFrameWindow

{

public:

TPoint pn,pk;

TMyWin Borland C++ для Windows - реферат() : 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 Borland C++ для Windows - реферат::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 Borland C++ для Windows - реферат():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 Borland C++ для Windows - реферат_SMALL будет вызываться функция CmSmall. Аналогично для команды Large. При ее выборе будет вызвана CmLarge. Снова подчеркнем, что для команд меню нет стандартных функций отклика, как это было с системными сообщениями Windows, т. е. в макросе Вы сможете указать имя хоть какой функции отклика, главное, чтоб она не воспринимала Borland C++ для Windows - реферат и не возвращала значений.

Описание функции Paint полностью совпадает с ее текстом в прошлом разделе.

Функции отклика на сообщения меню изменяют координаты правого нижнего угла прямоугольника и вызывают инкапсулированную в TFrameWindow функцию Invalidate, которая принуждает Windows обновить окно приложения. Вызов данной функции гласит системе, что окно просит обновления и та отправляет приложению Borland C++ для Windows - реферат сообщение WM_PAINT.

7.3. Задание

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

2) Удалите вызов функции Invalidate в одной из функций отклика. Растолкуйте конфигурации в логике работы приложения.

3) Сделайте дополнительное меню Color с командами Black и Red, которые должны изменять цвет выводимых на дисплее фигур.

8. Управляющие составляющие Windows

Разглядим несколько управляющих Borland C++ для Windows - реферат компонент Windows, облегчающих диалог с приложением.

1-ый компонент - это линейка прокрутки. Она может быть размещена в окне приложения и представляет собой вертикальную либо горизонтальную полосу с ползунком. Ползунок можно передвинуть, зацепив его указателем мыши и перетащив повдоль полосы прокрутки.

Линейка создается как объект класса TScrollBar в конструкторе окна приложения. Конструктору TScrollBar Borland C++ для Windows - реферат передаются координаты и размеры создаваемой линейки, а так же тип линейки - горизонтальная либо вертикальная.

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

Во время перемещения ползунка вертикальная линейка генерирует уведомляющие сообщения WM_VSCROLL. Вы сможете перехватить и обработать эти сообщения, объявив в классе-владельце таковой линейки функцию отклика EvVScroll Borland C++ для Windows - реферат и дополнив таблицу отклика класса макросом EV_WM_VSCROLL. Функция будет вызываться при изменении положения ползунка на линейке.

При разработке линейки присвойте адресок сконструированного объекта указателю. В итоге Вы получите доступ к различному набору функций объекта. Например, появится возможность позиционировать ползунок из программки, получать позицию ползунка и изменять масштаб Borland C++ для Windows - реферат линейки ( по дефлоту позиция ползунка на линейке меняется от 0 до 100).

Все произнесенное выше справедливо и для горизонтальной линейки прокрутки, но для реакции на ее сообщения требуется функция EvHScroll и макрос EV_WM_HSCROLL.

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

Кнопка может быть размещена в окне приложения Borland C++ для Windows - реферат и представляет собой прямоугольник с надписью. Кнопка реагирует на щелчки мышью выдачей уведомляющего сообщения. Она создается в конструкторе окна приложения, как объект класса TButton.

Конструктору TButton передается адресок объекта-окна, в каком Вы желаете расположить кнопку, текст надписи на кнопке, ее координаты и размер. Конструктору также передается постоянный Borland C++ для Windows - реферат идентификатор кнопки. Данный идентификатор совпадает с идентификатором уведомляющего сообщения, генерируемого кнопкой при нажатии.

Реакция на нажатия кнопки реализуется аналогично реакции на выбор команды меню: Вы описываете функцию реакции (имя функции случайное) на нажатия кнопки и помещаете в таблицу реакции макрос

EV_COMMAND(BUTTON_ID,UserName)

с идентификатором кнопки и именованием функции отклика Borland C++ для Windows - реферат.

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

Если Вы желаете реагировать лишь на нажатия кнопки, никак не изменяя ее черт, то присваивать указателю адресок сделанного объекта-кнопки не требуется.

8.1. Изменение Borland C++ для Windows - реферат размера выводимой графики при помощи линейки прокрутки

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

8.1.1. Начальный текст программки

#include

#include

#include

#include

class TMyWin Borland C++ для Windows - реферат : 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 Borland C++ для Windows - реферат_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 Borland C++ для Windows - реферат,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 и его членов-функций. Описание Borland C++ для Windows - реферат класса TMyWin содержит объявления точек (объектов класса TPoint) для левого верхнего и правого нижнего углов прямоугольника. В классе дополнительно объявлен объект класса TScrollBar, представляющий из себя вертикальную линейку прокрутки. TMyWin содержит также функцию отклика EvVScroll на сообщения от линейки прокрутки и переопределенную функцию Paint.

В теле конструктора TMyWin создается линейка Borland C++ для Windows - реферат прокрутки и задаются исходные значения координат 2-ух углов прямоугольника.

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

Функция EvVScroll вызывает одноименную функцию базисного класса для обеспечения полной обработки поступающих от скроллера сообщений. Потом функция просит перерисовать часть рабочей зоны окна для вывода геометрических фигур с модифицированными размерами. Для Borland C++ для Windows - реферат получения положения ползунка на линейке прокрутки употребляется функция GetPosition, которая возвращает число в спектре от 0 до 100. Вызов функции UpdateWindow вызывает незамедлительное обновление окна приложения, посылая окну WM_PAINT в обход системной очереди сообщений.

8.1.3. Задание

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

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

3) Изучить работу приложения, закомментировав вызов UpdateWindow Borland C++ для Windows - реферат в теле EvVScroll.

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

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

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

В приводимом тут тексте Windows-приложения цвет выводимых на экран геометрических фигур меняется при нажатии одной из 2-ух кнопок, размещенных Borland C++ для 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 Borland C++ для Windows - реферат.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 Borland C++ для Windows - реферат(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. Пояснения Borland C++ для Windows - реферат к программке

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

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

#define CM_BUTTON1 100

#define CM_BUTTON2 200,

определяющие постоянные идентификаторы сообщений, которые будут посылаться программке клавишами в ответ на щелчки мышью. CM_BUTTON1 генерируется первой кнопкой, CM_BUTTON2 - 2-ой. Можно избрать другие Borland C++ для Windows - реферат имена сообщений, хорошие от CM_BUTTONn и значения констант, хорошие от приведенных в программке, но для того, чтоб программка верно реагировала на сообщения кнопок, нужно верно заполнить таблицу реакций, передав в качестве аргументов макросам таблицы имена констант и имена функций отклика.

Конструктор прикладного окна делает при помощи оператора new две Borland C++ для Windows - реферат кнопки, передавая им в качестве аргументов идентификатор окна, идентификатор уведомляющего сообщения, которое будет генерировать кнопка, текст надписи на кнопке и координаты размещения кнопки в окне приложения.

Направьте внимание на то, что адреса сделанных объектов-кнопок не присваиваются указателям. Этого не требуется делать поэтому, что в программке нет необходимости ссылаться Borland C++ для Windows - реферат на эти объекты.

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

Таблица отклика конструируется так же, как это делалось при использовании меню. Она содержит идентификаторы уведомляющих сообщений, приходящих от кнопок и имена функций класса прикладного окна Borland C++ для Windows - реферат, отвечающих за обработку данных сообщений.

8.2.3. Задание.

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

2) Поменять аргументы конструктора (текст кнопки, координаты, размер и т. д.) TButton одной из кнопок.

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

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

Эта тема будет посвящена панелям ввода и Borland C++ для Windows - реферат редактирования - одной из популярнейших компонент Windows.

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

Панель редактирования создается, как объект класса TEdit и может быть расположена в любом прикладном окне. Данная панель представляет собой стандартный текстовый редактор Windows, в каком Borland C++ для Windows - реферат доступны все операции редактирования текста - вставка и подмена текста, удаление знаков и работа с буфером обмена Windows.

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

Создание панелей редактирования и размещение их в окне приложения осуществляются аналогично созданию кнопок и полос прокрутки. Объект создается из класса TEdit. Конструктору объекта передается Borland C++ для Windows - реферат идентификатор окна, в каком будет расположена панель, постоянный идентификатор панели, текст, который будет помещен в редактор и координаты панели в окне приложения. Дополнительно конструктору передается стиль панели редактирования: TRUE, если создается многострочная панель, FALSE, если панель - однострочная (см раздел 10.7).

9.1. Пример использования однострочного редактора текста для ввода и редактирования текста Borland C++ для Windows - реферат

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

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 Borland C++ для Windows - реферат")

{

- 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 Borland C++ для Windows - реферат();

//UpdateWindow();

}

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

{

- for (int i=1;i<=2;i++)

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

}

class TMyApp:public TApplication

{

public:

TMyApp(): TApplication(){};

void InitMainWindow()

- {

- MainWindow=new TMyWin();

- }

};

int OwlMain(int,char *[])

{

return TMyApp().Run();

}

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

Заголовочный файл owl\edit.h содержит описание класса TEdit и его членов-функций Borland C++ для Windows - реферат.

Класс TMyWin обрисовывает прикладное окно. В классе определен указатель на объект TEdit, применяемый для ссылки на член-функции элемента редактирования.

Конструктор TMyWin делает однострочную панель редактирования. 1-ый аргумент конструктора TEdit равен this. Это привязывает панель редактирования к прикладному окну. Конструктору также передается текст, который будет вначале Borland C++ для Windows - реферат расположен в панели редактирования.

Дополнительно в окне приложения располагается кнопка, при нажатии которой текст из буфера редактора переписывается в строчку с именованием txt. Для этого вызывается GetLine. 1-ый параметр функции - указатель на строчку, в которую требуется переписать текст строчки из редактора, 2-ой аргумент - длина переписываемой строчки, 3-ий аргумент - номер копируемой из элемента Borland C++ для Windows - реферат редактирования строчки. Функция отклика на нажатия кнопки заявляет о необходимости перерисовки головного окна. Это приводит к тому, что Paint выводит текст, скопированный в txt в окно приложения. После пуска приложения Вы сможете поменять текст в элементе редактирования, а потом надавить на кнопку. В итоге все конфигурации в Borland C++ для Windows - реферат редакторе будут отображены в окне приложения.

9.1.3. Задание

1) Сделайте и обследуйте приложение.

2) Расположите в окно приложения еще одну панель редактирования. После нажатия на кнопку приложение должно выводить в свое окно строчки из первой и 2-ой панели редактирования.

9.2. Внедрение многострочного редактора текста для ввода и редактирования текста.

Нижеприведенное Windows-приложение употребляет многострочную панель Borland C++ для Windows - реферат редактирования текста.

9.2.1. Начальный текст программки

#include

#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 Borland C++ для Windows - реферат 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 Borland C++ для Windows - реферат,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) Сделайте и Borland C++ для Windows - реферат сделайте приложение.

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

9.3. Мало британского

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

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

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

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

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

10.2. Класс TApplication

Производный от класса Borland C++ для Windows - реферат TModule. Употребляется для порождения класса для объекта-приложения Windows.

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

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

TFrameWindow *MainWindow; - - public

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

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

virtual void InitApplication(); - - protected

Делает всякую инициализацию, нужную только для первого экземпляра приложения. По дефлоту InitApplication Borland C++ для Windows - реферат ниего не делает.

virtual void InitInstance(); - - - protected

Выпоняется для каждого экземпляра приложения. InitInstance вызывает InitMainWindow, а потом делает и высвечивает на дисплее главное окно методом вызова соответственно TWindow::Create и TWindow::Show.

virtual int Run(); - - - public

Инициализирует экземпляр приложения, вызывая InitApplication для первого экземпляра и InitInstance для всех других. Если инициализация прошла удачно, Run Borland C++ для Windows - реферат вызывает MessageLoop и запускает приложение.

virtual void InitMainWindow(); - - protected

По дефлоту InitMainWindow делает обобщенный объект - главное окно с именованием приложения в качестве заголовка. Для сотворения требуемого головного окна нужно переопределить InitMainWindow, не забыв сделать ссылку в MainWindow на сделанное главное окно (класса TFrameWindow).

TAplication( const far*name=0); - - public

Этот Borland C++ для Windows - реферат конструктор делает объект класса TApplication.

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

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

10.3. Класс TFrameWindow

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

Класс TFrameWindow содержит 4 член-данных и 25 член-функций, из которых в данном пособии употребляются:

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

virtual Borland C++ для Windows - реферат BOOL AssignMenu(TResId menuId); - - public

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

void SetupWindow(); - - - protected

Вызывает TWindow::SetupWindow() для сотворения окон в перечне потомков. SetupWindow() делает исходную подготовку пользовательского окна, если оно существует, связывает меню рамки с ресурсом меню.

TFrameWindow(TWindow *parent, const char far *title=0, TWindow Borland C++ для Windows - реферат *clientWnd=0, BOOL shrinkToClient=FALSE, TModule *module=0); - - public

Делает объект-окно с окном предком, на которое указыывает parent. Устанавливает позиции и поля размеров структуры Attr равными стандартным значениям.

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

10.4. Класс TWindow

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

Класс TWindow содержит 12 член-данных Borland C++ для Windows - реферат и 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

Конструктор Borland C++ для Windows - реферат класса TWindow. Добавляет this к списку окон-потомков parent, если this не 0.

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

virtual BOOL CanClose(); - - - public

Возвращает TRUE, если ассоциированный интерфейсный элемент может быть закрыт. По другому возвращает FALSE.

inline TApplicacion*GetApplication(); - - public

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

int Borland C++ для Windows - реферат 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 Borland C++ для Windows - реферат, TRect& rect); - public

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

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

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

Данная ссылка на структуру TRect представляет собой ограничивающий Borland C++ для Windows - реферат прямоугольник области, требующей перерисовки.

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

10.5. Класс TDC

Является корневым классом для вспомогательных классов контекстов устройств GDI. Класс TDC содержит 8 член-данных и 149 член-функций, из которых в данном пособии употребляются:

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

inline BOOL Ellipse(int x1, int y1, int x2, int y Borland C++ для Windows - реферат2); - - 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 Borland C++ для Windows - реферат, const TSize& size);

inline BOOL Rectangle(const TRect& rect);

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

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

void SelectObject(const TPen& pen); - - public

Выбирает данное перо в данном контексте устройства. Избранный ранее объект Borland C++ для Windows - реферат сохраняется в соответственном элементе данных.

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 Borland C++ для Windows - реферат(const TPoint& point, const char far* string, int count=-1);

Отрисовывают до count знаков данной, заканчивающейся нулем, строчки string в данном контексте устройства. Если count=-1(по умолчнию), рисуется вся строчка. Аргументы x,y задают логические координаты опорной точки, которая употребляется для выравнивания первого знака.

10.6. Класс TScrollBar

Объекты типа TScrollBar Borland C++ для Windows - реферат представляют самостоятельные вертикальные и горизонтальные линейки прокрутки. Большая часть член-функций TScrollBar управляют позицией и спектром перемещения бегунка линейки прокрутки.

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

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

TScrollBar(TWindow* parent, int id, int x, int y, int w, int Borland C++ для Windows - реферат h, BOOL isHScrollBar, TModule* module=0); - - - public

Делает и инициализирует объект типа TScrollBar в данном окне с идентификатором id, в позиции x,y и размерами w,h. Если isHScrollBar равен TRUE, то создается горизонтальная линейка прокрутки, по другому - вертикальная.

inline virtual int GetPosition(); - - public

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

inline virtual void Borland C++ для Windows - реферат SetRange(int min, int max); - - public

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

10.7. Класс TEdit

Класс TEdit применяется при разработке объекта “панель редактирования”. TEdit является производным от класса TStatic, который в свою очередь порожден от класса TControl.

Существует две разновидности панели редактирования - однострочная и многострочная. Являясь интерфейсным элементом, панель редактирования Borland C++ для Windows - реферат позволяет ввести текст и редактировать его.

Член-функции класса 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 Borland C++ для Windows - реферат=FALSE, TModule *module=0); - - public

Конструирует панель редактирования в окне parent, задавая идентификатор панели id, положение x,y и размеры панели w,h, длину вводимого текста textlen. Аргумент multiline задает вид панели редактирования(однострочная либо многострочная).

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

Получает текстовую строчку с номером Borland C++ для Windows - реферат lineNumber из панели редактирования и возвращает ее в строке str, заканчивающейся нулем.

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

int GetLineLength(int lineNumber); - - public

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

inline int GetNumLines(); - - - public

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


borland-c-dlya-windows-referat.html
boroda-status-ili-kapriz.html
borodin-denis-mihajlovich.html