
- •Техническое задание
- •2.Краткие теоретические сведения
- •2.1.Особенности создания приложений для ос Windows.
- •2.2. Краткая характеристика owl и структура owl-программы.
- •3. Состав и характеристики файлов проекта
- •4. Стандартные классы и функции приложения
- •Стандартные классы owl, используемые в приложении.
- •Стандартные функции классов owl, используемых в приложении.
- •5. Пользовательские классы и функции приложения
- •5.1 Перечень разработанных классов, их данных и методов
- •Иерархия классов приложения
- •6. Системные требования
- •7. Руководство по эксплуатации
- •8. Список использованной литературы
5. Пользовательские классы и функции приложения
5.1 Перечень разработанных классов, их данных и методов
Класс TMDIApp – это класс приложения, производный от класса ТApplication библиотеки OWL.
Методы класса:
InitMainWindow() – замещенная функция базового класса.
Класс TMDIApp – это класс главного окна приложения, производный от класса TFrameWindow, который, в свою очередь, производный от класса TWindow.
Методы класса:
1) void CmFileOpen() – функция отклика на сообщение от пункта меню «File/Оpen…». Алгоритм этой функции представлен на рисунке 5.1
2) void CmFileNew() - функция отклика на сообщение от пункта меню «File/Оpen…»
3) void CmHelpAbout() – функция отклика на сообщение от пункта меню «Help/About…»
5) void CmHelpAutor() – функция отклика на сообщение от пункта меню «Help/Autor…»
6) void CmFileExit() – функция отклика на сообщение от пункта меню «File/Exit»
7) DECLARE_RESPONSE_TABLE(MyWindow) – объявление в классе окна таблицы откликов на сообщения. Это макрос с параметром – именем класса окна. Сама таблица откликов определяется внешне.
Рисунок 5.1 – Схема алгоритма функции CmFileOpen()
Иерархия классов приложения
Иерархия классов приложения показана на рисунке 5.2
Рисунок 5.2 – Иерархия классов приложения
6. Системные требования
Процессор 386 и выше.
Операционная система Windows 9X и выше.
Объем файла 26.exe – 48 Кб.
Минимальный размер ОП 52,0 Кб.
Статическая компоновка. Подключения каких-либо дополнительных библиотек не требуется.
Требуемые библиотеки:
Cw3230.dll
Owl52f.dll
Bds52f.dll
7. Руководство по эксплуатации
Для того, чтобы создать документ на тестовом редакторе надо запустить приложение. При запуске приложения открывается главное окно приложения, изображенное на рисунке 7.1
Рисунок 7.1 – Вид главного окна приложения
При выборе пункта меню File\New… или при нажатии кнопки «New» появляется окно для ввода текста. Оно представлено на рисунке 7.2
Рисунок 7.2 – Изображение главного окна для ввода текста
Введенные данные можно редактировать. Выделив нужные данные, можно их вырезать, скопировать, вставить и удалить. Это представлено на рисунке 7.3
Рисунок 7.3 – Изображение редактирования текста.
Введенные данные можно сохранить, нажав на закрытие окна. При этом появится стандартное окно Windows Сохранить как … . Причем если сохранять файл с уже существующим именем, то данные будут дописываться в конец выбранного файла.
При выборе в меню File\Exit выводится окно сообщения с запросом о подтверждении выхода из приложения. Вид окна этого сообщения приведен на рисунке 7.5
Рисунок 7.3 – Окно с подтверждением запроса о выходе из приложения
8. Список использованной литературы
Горнец Н.Н., Рощин А.Г., Черкасова Н.И., Половов Р.М., Климова Т.Д. Пособие по выполнению курсовых и дипломных проектов и работ для студентов специальности 220100 дневного обучения. – М.: МГТУ ГА, 2002.
Подбельский В.В. Язык Си++. – М.: Финансы и статистика, 1996
Т. Сван. Программирование для Windows в Borland С++. – М.: Бином, 1995
Финогненов К.Г. Win32. Основы программирования. – 2-е изд., испр. И дополн. – М.: ДИАЛОГ-МИФИ, 2006. – 416 с.
Черкасова Н.И. Операционные системы. Пособие к выполнению курсовой работы. – М.: МГТУ ГА, 2003. – 48 с.
Приложение А
Листинг файла с исходным кодом программы (kp.cpp)
#include <owl\applicat.h>
#include <owl\decmdifr.h>
#include <owl\editfile.h>
#include <owl\mdi.h>
#include <owl\mdichild.h>
#include <owl\mdi.rh>
#include <owl\gadget.h>
#include <owl\messageb.h>
#include <owl\toolbox.h>
#include <owl\controlb.h>
#include <owl\statusba.h>
#include <owl\buttonga.h>
#include "kp.rh"
class TDecoChild:public TMDIChild
{
public:
TDecoChild(TMDIClient& parent, const char far *name);
TDecoChild(TMDIClient& parent);
protected:
string filename;
};
TDecoChild::TDecoChild(TMDIClient& parent):TMDIChild(parent)
{
filename="";
}
TDecoChild::TDecoChild(TMDIClient& parent, const char far *name)
:TMDIChild(parent, name)
{
filename=name;
}
class TDecoClient:public TMDIClient
{
public:
TDecoClient():TMDIClient() {}
TDecoClient* client;
};
class TDecoApp: public TApplication
{
public:
TDecoApp(const char far* name):TApplication(){}
void InitMainWindow();
protected:
TDecoClient *client;
TControlBar *controlBar;
void CmFileNew();
void CmFileOpen();
DECLARE_RESPONSE_TABLE (TDecoApp);
};
DEFINE_RESPONSE_TABLE1(TDecoApp, TApplication)
EV_COMMAND (CM_FILENEW, CmFileNew),
EV_COMMAND (CM_FILEOPEN, CmFileOpen),
END_RESPONSE_TABLE;
void TDecoApp::CmFileNew()
{
TEditFile *editFile = new TEditFile;
TMDIChild *childWnd = new TMDIChild (*client, "", editFile);
childWnd->SetIconSm(this,IDI_ICON3);
childWnd->Create();
}
void TDecoApp::CmFileOpen()
{
TOpenSaveDialog::TData fileData (OFN_FILEMUSTEXIST |
OFN_HIDEREADONLY | OFN_PATHMUSTEXIST,
"Все файлы (*.*) | *.* |Текстовые файлы (*.txt) | *.txt |", 0, 0, " * ");
strcpy(fileData.FileName, "");
TFileOpenDialog *dialog =
new TFileOpenDialog (MainWindow, fileData);
int result = dialog->Execute();
if (result == IDOK)
{
TEditFile *editFile =
new TEditFile (0, 0, 0, 0, 0, 0, 0, fileData.FileName);
TMDIChild *childWnd =
new TMDIChild (*client, "", editFile);
childWnd->SetIcon (this, IDI_ICON3);
childWnd->Create();
}
controlBar->SetHintCommand (-1);}
void TDecoApp::InitMainWindow()
{
client = new TDecoClient;
TDecoratedMDIFrame *frame = new TDecoratedMDIFrame ("Текстовый редактор",
MENU_1, *client, TRUE);
frame->Attr.AccelTable=MENU_1;
frame->AssignMenu(MENU_1);
frame->SetBkgndColor(RGB(0,0,255));
frame->Attr.X = 100;
frame->Attr.Y = 100;
frame->Attr.W = 650;
frame->Attr.H = 400;
controlBar = new TControlBar (frame);
controlBar->Insert(*new TButtonGadget(ID_NEW, CM_FILENEW));
controlBar->Insert(*new TSeparatorGadget (10));
controlBar->Insert(*new TButtonGadget(ID_CUT, CM_EDITCUT));
controlBar->Insert(*new TButtonGadget(ID_COPY, CM_EDITCOPY));
controlBar->Insert(*new TButtonGadget(ID_PASTE, CM_EDITPASTE));
controlBar->Insert(*new TButtonGadget(ID_UNDO, CM_EDITUNDO));
controlBar->SetHintMode(TGadgetWindow::EnterHints);
frame->Insert(*controlBar, TDecoratedFrame::Top);
TStatusBar *statusBar = new TStatusBar (0,
TGadget::Recessed,
TStatusBar::CapsLock | TStatusBar::NumLock |
TStatusBar::Overtype);
frame->Insert(*statusBar, TDecoratedFrame::Bottom);
frame->SetIconSm(this, IDI_ICON2);
frame->SetIcon(this, IDI_ICON2);
EnableCtl3d (TRUE);
SetMainWindow(frame);
}
int OwlMain(int,char *[])
{
TDecoApp app("Сохранение");
return app.Run();
}
Приложение Б
Листинг файла сценария ресурсов kp.rc
MENU_1 MENU
{
POPUP "&File"
{
MENUITEM "&New", CM_FILENEW
MENUITEM SEPARATOR
MENUITEM "E&xit F1", CM_EXIT
}
POPUP "&Edit"
{
MENUITEM "&Undo", CM_EDITUNDO
MENUITEM SEPARATOR
MENUITEM "&Cut", CM_EDITCUT
MENUITEM "C&opy", CM_EDITCOPY
MENUITEM "&Paste", CM_EDITPASTE
MENUITEM "&Delete", CM_EDITDELETE
}
}
STRINGTABLE
{
CM_FILENEW, "Создание нового документа"
102, "Выход из редактора"
CM_EDITUNDO, "Отменить последнюю операцию"
CM_EDITCOPY, "Скопировать выделенный текст в буфер обмена"
CM_EDITCUT, "Поместить выделенный текст в буфер обмена"
CM_EDITPASTE, "Вставить текст из буфера"
CM_EDITDELETE, "Удалить выделенный текст"
IDS_UNABLEWRITE, "Ошибка при записи файла %s на диск."
IDS_FILECHANGED, "Этот файл был изменен. \n\nСохранить изменения?"
IDS_CANNOTFIND, "Фрагмент ""%s"" отсутствует."
}
ACCELERATORS_2 ACCELERATORS
{
VK_F1, 108, VIRTKEY
}
Приложение В
Листинг заголовочного файла kp.rh
//#define IDB_BITMAP1 102
#define ACCELERATORS_2 2
#define MENU_1 100
#define ID_MDIEDIT 101
#define ID_SAVE CM_FILESAVE
#define ID_PASTE CM_EDITPASTE
#define ID_OPEN CM_FILEOPEN
#define ID_NEW CM_FILENEW
#define ID_CUT CM_EDITCUT
#define ID_COPY CM_EDITCOPY
#define ID_UNDO CM_EDITUNDO
//#define CM_HELPABOUT 24346