скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Borland C++ для Windows

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

ПРОГРАММИРОВАНИЕ ДЛЯ 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.

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

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

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

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

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

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

  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. Указатель используется для ссылки на элементы структуры Attr главного окна приложения.

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

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

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

3.2.3. Задание

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

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

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

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

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

GetSystemMetrics - to Get System Metrics - получить системные характеристики.

a screen - экран

a frame - рамка

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

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

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

to show - показать

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

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

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

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

Для того, чтобы создать класс, функции которого будут откликаться на пришедшие из системы сообщения, необходимо:

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

DECLARE_RESPONSE_TABLE(<имя класса>);

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

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

DEFINE_RESPONSE_TABLEn(<имя класса>[,класс][,класс]...);

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

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

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


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.