Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа Гавриловой А.П..doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
297.47 Кб
Скачать

5. Пользовательские классы и функции приложения

5.1 Перечень разработанных классов, их данных и методов

Класс TMDIApp – это класс приложения, производный от класса ТApplication библиотеки OWL.

Методы класса:

  1. 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()

    1. Иерархия классов приложения

Иерархия классов приложения показана на рисунке 5.2

Рисунок 5.2 – Иерархия классов приложения

6. Системные требования

  1. Процессор 386 и выше.

  2. Операционная система Windows 9X и выше.

  3. Объем файла 26.exe – 48 Кб.

  4. Минимальный размер ОП 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. Список использованной литературы

  1. Горнец Н.Н., Рощин А.Г., Черкасова Н.И., Половов Р.М., Климова Т.Д. Пособие по выполнению курсовых и дипломных проектов и работ для студентов специальности 220100 дневного обучения. – М.: МГТУ ГА, 2002.

  2. Подбельский В.В. Язык Си++. – М.: Финансы и статистика, 1996

  3. Т. Сван. Программирование для Windows в Borland С++. – М.: Бином, 1995

  4. Финогненов К.Г. Win32. Основы программирования. – 2-е изд., испр. И дополн. – М.: ДИАЛОГ-МИФИ, 2006. – 416 с.

  5. Черкасова Н.И. Операционные системы. Пособие к выполнению курсовой работы. – М.: МГТУ ГА, 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

17