ПРОГРАММИРОВАНИЕ ДЛЯ WINDOWS НА BORLAND C++
1. Введение
Цель данного пособия - облегчить усвоение программирования для Windows на BORLAND C++ и способствовать распространению библиотеки OWL (Object Windows Library), которая хорошо продумана и использование которой явно вырисовывает достоинства объектно-ориентированного программирования - инкапсуляции, наследования и полиморфизма.
Пособие привязано к лекционному курсу “Технология программирования”, требуя знаний изложенных на лекциях основ объектно-ориентированного программирования на C++ и предназначено как руководство к лабораторным работам по этому лекционному курсу.
Пособие ориентировано на пошаговую разработку за компьютером несложных Windows-приложений, в процессе которой осуществляется их исследование путем сравнения различных вариантов реализации, изменения параметров членов-функций и значений членов-данных используемых классов.
В создаваемых Windows-приложениях используется очень незначительная, но базовая часть OWL библиотеки, активное усвоение которой способствует снятию барьера, и, как надеются авторы, вызовет удовольствие от первого знакомства с завоевавшей мир Windows.
1.1. Ввод, редактирование и запуск Windows-приложения
Чтобы ввести исходный текст программы, откомпилировать и увидеть на экране окно Windows-приложения, необходимо выполнить следующие действия:
1) Сделайте двойной щелчок левой клавиши мыши (или нажатие ENTER) на пиктограмме Borland C++. Появится окно компилятора BC4.
2) Щелчок левой клавиши мыши на элементе меню Project (или переход в строку меню путем нажатия F10, поиск и высвечивание элемента Project с помощью клавиш ¬ и ®. Раскрыть Project с помощью клавиши ENTER).
3) Щелчок мышью на команде New project (или выбрать данный пункт меню с помощью клавиш и ¯ и нажать ENTER). В дальнейшем для краткости будем говорить, что нужно выполнить команду Project|New project (команду New project из меню Project).
Таким образом, будет выполнена команда создания нового проекта и на экране появится следующий диалог.
4) Щелчок мышью на кнопке Browse
для просмотра каталога.5) Воспользовавшись линейкой прокрутки, найти имя требуемого каталога и сделать на нем двойной щелчок левой клавиши мыши.
6) В поле File Name ввести имя проекта с расширением .ide, затем нажать ENTER.
7) Нажмите кнопку Advanced
и снимите флажки rc и def в появившемся диалоге Advanced Options, затем нажмите OK.8) В диалоге создания проекта нажмите кнопку OK.
9) Сделайте двойной щелчок левой кнопкой мыши на имени файла с расширением cpp в окне созданного проекта, в результате чего откроется окно для редактирования текста программы.
10) Введите исходный текст программы.
11) Для компиляции и выполнения нажмите Ctrl-F9.
12) Если получены сообщения об ошибках, то исправьте их и проведите компиляцию заново. Если ошибки отсутствуют, то на экране появится окно Вашего Windows-приложения. Осуществите диалог с приложением, используя мышь.
1.2. Основные приемы редактирования текста в интегрированной среде BORLAND C++
1.2.1. Копирование и удаление части текста в окне редактирования
Для копирования текста из одной его части в другую выполняются следующие действия:
1) Выделить копируемый текст:
а) Подвести курсор к началу копируемого текста.
б) Нажать и удерживать клавишу Shift.
в) Используя клавиши управления курсором, выделить текст.
г) Отпустить Shift.
2) Занести выделенный текст в буфер обмена (Clipboard) путем одновременного нажатия Ctrl и Ins или выполнения команды Edit|Copy.
3) Перевести курсор к месту вставки текста.
4) Перенести текст из буфера в редактор путем одновременного нажатия Shift и Ins или выполнения Edit|Paste.
1.2.2. Копирование содержимого ранее созданного cpp-файла в окно редактирования
Для копирования выполните следующие действия:
1) Выполните команду File|Open.
2) В появившемся диалоговом окне выберите требуемый файл и нажмите OK. Откроется окно с содержимым указанного файла.
3) С помощью вышеописанных действий выделите требуемый фрагмент текста или выполните Edit|Select All для выделения всего текста в окне редактирования.
4) Выполните Edit|Copy или нажмите Ctrl-Ins для копирования выделенного текста в буфер обмена.
5) Если открытый файл больше не нужен, закройте окно. Это делается двойным щелчком левой кнопки мыши на кнопке системного меню окна. Можно сделать один щелчок мыши и в появившемся меню выбрать Close.
6) Выполните Edit|Paste или нажмите Shift-Ins для вставки текста из буфера в окно редактирования.
2. Создание простейшего приложения
Для усвоения работы с компилятором BORLAND C++ создадим несколько вариантов простейшего Windows-приложения, которое создает окно с заголовком. Заголовок окна содержит надпись “Hello, Windows !” или “Hello, Hello !”. Окно также содержит кнопки минимизации и максимизации, а также системное меню приложения.
2.1. Создание объекта приложения внутри функции OwlMain
При написании программы будем работать с классом TApplication и функцией OwlMain. В данном варианте программы объект класса TApplication создается внутри функции OwlMain.
2.1.1. Исходный текст приложения
#include <owl\applicat.h>
int OwlMain(int, char* [])
{
TApplication app("Hello, Windows !");
return app.Run();
}
2.1.2. Пояснения к программе
Заголовочный файл owl\applicat.h содержит описание класса TApplication (см. Раздел 10.2.).
app - объект класса TApplication. При создании этого объекта используется неявный вызов конструктора, устанавливающего текст заголовка прикладного окна “Hello, Windows !”.
app.Run() - вызов члена-функции класса TApplication для объекта app. Функция TApplication::Run() запускает приложение.
2.1.3. Задание
1) Создать и выполнить приложение, убедившись в правильности функционирования кнопок максимизации и минимизации окна.
2) Передвинуть окно в другое место экрана.
3) Плавно изменить высоту и ширину окна с помощью мыши.
4) Закрыть приложение.
5) Изменить исходный текст приложения, заменив заголовок окна на “Hello, Hello !”. Убедиться в появлении окна с новым заголовком.
2.1.4. Немного английского
an application - приложение
to run - выполняться
a window - окно
Windows - название системы Windows
OWL - Object Windows Library - библиотека классов Windows
to include - включать
main - основной, главный
to return - возвращать, возвращаться
2.2. Динамическое создание объекта класса TApplication
В этом варианте приложения объект класса TApplication динамически создается в свободной области памяти.
2.2.1. Исходный текст приложения
#include <owl\applicat.h>
int OwlMain(int, char* [])
{
TApplication *app;
app=new TApplication(" Hello Windows !");
return app->Run();
}
2.2.2. Пояснения к программе
app - указатель на объект типа TApplication.
Оператор new выделяет участок в свободной области памяти под объект класса TApplication. При этом неявный вызов конструктора инициализирует объект приложения и устанавливает текст заголовка в “Hello, Windows !”.
2.2.3. Задание
Создать и выполнить приложение.
2.3. Кратчайший вариант Windows-приложения
2.3.1. Исходный текст приложения
#include <owl\applicat.h>
int OwlMain(int, char* [])
{
return TApplication(" Hello Windows !").Run();
}
2.3.2. Задание
Создать приложение и убедиться в его работоспособности.
3. Использование класса TFrameWindow для создания главного окна
Класс TFrameWindow является производным от TWindow и обеспечивает функционирование главного окна приложения.
3.1. Создание объекта главного окна
В нижеследующем приложении член-функция InitMainWindow класса TApplication с помощью оператора new и конструктора TFrameWindow создает объект - главное окно приложения. Адрес объекта помещается в переменную MainWindow объекта приложения.
3.1.1. Исходный текст программы
#include <owl\applicat.h>
#include <owl\framewin.h>
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. Пояснения к программе
Включаемый заголовочный файл owl\framewin.h содержит описание класса TFrameWindow (см. раздел 10.3.).
Поскольку в данном варианте приложения мы хотим создать свое собственное главное окно в обход стандартных методов класса TApplication, мы должны переопределить виртуальную функцию InitMainWindow класса TApplication. Для этого мы выводим новый, уже наш, класс TMyApp, как производный от класса TApplication и описываем в нем виртуальную функцию InitMainWindow.
Тело конструктора TMyApp пустое, т.е. {}. Работа этого конструктора сводится только к вызову конструктора базового класса TApplication, содержащего единственный параметр - текст заголовка главного окна приложения (см. раздел 10.2.2).
Тело функции InitMainWindow класса TMyApp содержит оператор new, который совместно с конструктором TFrameWindow создает экземпляр объекта-окна с новым заголовком “Hello, Hello !”. Адрес объекта присваивается переменной MainWindow (см. раздел 10.2.1.), унаследованной от TApplication.
3.1.3. Задание
1) Создать и выполнить приложение. Обратите внимание! Вместо заголовка “Hello, Windows !”, заданного конструктором TMyApp, окно имеет заголовок “Hello, Hello !”. Это результат работы переопределенной виртуальной функции TMyApp::InitMainWindow, которая была вызвана после конструктора и изменила текст заголовка на “Hello, Hello !”.
2) Измените тексты заголовков, используемые конструкторами TMyApp и TFrameWindow.