Программирование на Borland С++Рефераты >> Программирование и компьютеры >> Программирование на Borland С++
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).