4. ОПИСАНИЕ РАБОТЫ ПРОГРАММЫ
После запуска программы появляется окно «EditApp». Так выглядит внешний вид программы.
Меню Файл имеет следующие пункты: Новый, Открыть, Закрыть, Сохранить, Сохранить как, Печать, Предварительный просмотр, Настройка печати, Выход.
Меню Правка имеет следующие пункты: Отменить, Вырезать, Копировать, Вставить, Поиск.
Поиск: Выбрав это меню выскочить окно поиска, куда нужно ввести искомое слово и нажать ОК.
Результат поиска
Меню Вид имеет следующие пункты: Панель инструментов, Строка состояния, т.е по желанию их можно скрыть.
Меню Окно имеет следующие пункты: Новое окно, Каскадом, Заголовками, Сортировать иконки, за разделителем располагаются имена открытых файлов, а галочкой помечается тот файл, с которым работают. При создание нового документа окно открывается прямо в программе, а не в новом файле. По желанию пользователь может расположить их каскадом или заголовками для удобства работы.
Меню Помощь содержит информацию о программе.
5. ЗАКЛЮЧЕНИЕ
В ходе выполнения курсовой работы предоставленная программа была выполнена и работала. Конечно это простой текстовый редактор и у него мало функций по сравнению с MS WORD. Он чем-то похож на простой блокнот.
Единственное его отличие что он был написан на языке С++. Язык С++ работал без наладок, был прост в обращении, возникающие ошибке при программировании легко исправлялись. С++ зарекомендовал себя с лучшей стороны, и я бы порекомендовал его как для начинающих программистов так и для профессионалов.
6. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Эффективная работа: Visual C++. Net. – СПб.: Питер, 2002. – 816 с.: ил.
2. C++, Объективно – ориентированное программирование: Практикум. – СПб.: Питер, 2004. – 265 с.: ил.
3. C/C++. Программирование на языке высокого уровня – СПб.: Питер, 2005. – 461 с.: ил.
4. Круглински Д.Д., Уингоу С., Шеферд Д. Программирование на Microsoft Visual C++ 6.0 : Пер. с англ..-СПб.- М. Харьков - Минск: Питер; Русская редакция, 2000.-821 с.: ил. + CD-ROM.
7. ПРИЛОЖЕНИЕ
Файл EDitApp.cpp. Этот файл является основным файлом приложения.Он включает в себя определение класса CEditApp.
#include "stdafx.h"
#include "EditApp.h"
#include "MainFrm.h"
#include "ChildFrm.h"
#include "EditAppDoc.h"
#include "EditAppView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CEditAppApp
BEGIN_MESSAGE_MAP(CEditAppApp, CWinApp)
ON_COMMAND(ID_APP_ABOUT, &CEditAppApp::OnAppAbout)
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
// CEditAppApp construction
CEditAppApp::CEditAppApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
// The one and only CEditAppApp object
CEditAppApp theApp;
// CEditAppApp initialization
BOOL CEditAppApp::InitInstance()
{
// InitCommonControlsEx() is required on Windows XP if an application
// manifest specifies use of ComCtl32.dll version 6 or later to enable
// visual styles. Otherwise, any window creation will fail.
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// Set this to include all the common control classes you want to use
// in your application.
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
// Initialize OLE libraries
if (!AfxOleInit())
{
AfxMessageBox(IDP_OLE_INIT_FAILED);
return FALSE;
}
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need
// Change the registry key under which our settings are stored
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(4); // Load standard INI file options (including MRU)
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_EditAppTYPE,
RUNTIME_CLASS(CEditAppDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CEditAppView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
// create main MDI Frame window
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
{
delete pMainFrame;
return FALSE;
}
m_pMainWnd = pMainFrame;
// call DragAcceptFiles only if there's a suffix
// In an MDI app, this should occur immediately after setting m_pMainWnd
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line. Will return FALSE if
// app was launched with /RegServer, /Register, /Unregserver or /Unregister.
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// The main window has been initialized, so show and update it
pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->UpdateWindow();
return TRUE;
}
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// App command to run the dialog
void CEditAppApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
// CEditAppApp message handlers
Первая карта сообщений (конструкция BEGIN_MESSAGE_MAP
END_MESSAGE_MAP) принадлежит классу СEditApp. Вней сообщения с индетификатором ID_APP_ABOUT, ID_FILE_NEW, ID_FILE_OPEN,
ID_FILE_PRINT_SETUP связываются соответственно с обработчиками OnAppAbout(), CWinApp::OnFileNew(), CWinApp::OnFileOpen(), CWinApp::OnFilePrintSetup(). В этом файле реализуется конструктор класса СEditApp, а также его методы OnAppAbout() и InitInstance().
Файл MainFrm.cpp. Этот файл содержит реализацию класса CMainFrame, которой порождается от класса CFrameWnd и управляет всеми дочерними MDI-окнами.
#include "stdafx.h"
#include "EditApp.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
ON_WM_CREATE()
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Delete these three lines if you don't want the toolbar to be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CMDIFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return TRUE;
}
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CMDIFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CMDIFrameWnd::Dump(dc);
}
#endif //_DEBUG
// CMainFrame message handlers
В массиве indicators перечислены идентификаторы полей строки состояния, которые служат индикаторами нажатия некоторых клавиш. Добавление в окно приложения панели инструментов и строки состояния производится выделенным полужирным шрифтом. Функции-члены AssertValid() и
Dump() используют объявления содержащиеся родительском классе. Класс
CMainFrame изначально не имеет обработчиков сообщений.
Файл EditAppDoc.cpp. Этот файл содержит реализацию класса CEditAppDoc, Который управляет работой с конкретными документами, а также обеспечивает загрузку и сохранение файлов.
#include "stdafx.h"
#include "EditApp.h"
#include "EditAppDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CEditAppDoc
IMPLEMENT_DYNCREATE(CEditAppDoc, CDocument)
BEGIN_MESSAGE_MAP(CEditAppDoc, CDocument)
END_MESSAGE_MAP()
// CEditAppDoc construction/destruction
CEditAppDoc::CEditAppDoc()
{
// TODO: add one-time construction code here
}
CEditAppDoc::~CEditAppDoc()
{
}
BOOL CEditAppDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
return TRUE;
}
// CEditAppDoc serialization
void CEditAppDoc::Serialize(CArchive& ar)
{
// CEditView contains an edit control which handles all serialization
reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);
}
// CEditAppDoc diagnostics
#ifdef _DEBUG
void CEditAppDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CEditAppDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
// CEditAppDoc commands
Некоторые методы класса CEditAppDoc могут применяться для поддержки самых необходимых операций работы с документами. В функции OnNewDocument() используются эта же функция из родительского класса
<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);
Эта строка кода поддерживает работу команд меню File, обеспечивающих создание, открытие и сохранение файлов. Функции-члены AssertValid() и
Dump() используют описание, предлагаемое родительским классом.
Файл CEditAppView.cpp. Этот файл содержит реализацию класса CEditAppView, который порождается от класса CEditView и управляет отображением документа.
#include "stdafx.h"
#include "EditApp.h"
#include "SeekDialog.h"
#include "EditAppDoc.h"
#include "EditAppView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CEditAppView
IMPLEMENT_DYNCREATE(CEditAppView, CEditView)
BEGIN_MESSAGE_MAP(CEditAppView, CEditView)
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, &CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CEditView::OnFilePrintPreview)
ON_COMMAND(ID_SEEK, &CEditAppView::OnSeek)
END_MESSAGE_MAP()
// CEditAppView construction/destruction
CEditAppView::CEditAppView()
{
// TODO: add construction code here
}
CEditAppView::~CEditAppView()
{
}
BOOL CEditAppView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
BOOL bPreCreated = CEditView::PreCreateWindow(cs);
cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL); // Enable word-wrapping
return bPreCreated;
}
// CEditAppView printing
BOOL CEditAppView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default CEditView preparation
return CEditView::OnPreparePrinting(pInfo);
}
void CEditAppView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// Default CEditView begin printing
CEditView::OnBeginPrinting(pDC, pInfo);
}
void CEditAppView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// Default CEditView end printing
CEditView::OnEndPrinting(pDC, pInfo);
}
// CEditAppView diagnostics
#ifdef _DEBUG
void CEditAppView::AssertValid() const
{
CEditView::AssertValid();
}
void CEditAppView::Dump(CDumpContext& dc) const
{
CEditView::Dump(dc);
}
CEditAppDoc* CEditAppView::GetDocument() const // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEditAppDoc)));
return (CEditAppDoc*)m_pDocument;
}
#endif //_DEBUG
// CEditAppView message handlers
void CEditAppView::OnSeek()
{
// TODO: Add your command handler code here
CSeekDialog dlg(this);
if( dlg.DoModal() == IDOK){
FindText( dlg.m_Sample);
}
}
Класс CEditAppView управляет печатью документов с помощью функций OnPreparePrinting(), OnBeginPrinting(),OnEndPrinting(). Выделенный полужирным шрифтом тектс отвечает за поиск слов в тексте.
... в виде небольших практических заданий, либо повторения изученного материала для написания тестов. Характер учебного материала. Учебный материал, используемый учителем при изучении такой темы как "Текстовый редактор Microsoft Word", носит комбинационный характер, так как включает в себя описательный, информационный, обобщающий и теоретический типы. Он преподает нам описание различных пунктов ...
... проверку русского текста, создавать закладки и гиперссылки. При этом он понимал закладки, поставленные MS Word. В качестве компенсации за отсутствие одной из самых важных функций пользователь коммерческого текстового редактора Atlantis получает ненужную функцию написания текста в несколько колонок. Безопасность Функции безопасности, которые включают в себя возможность паролирования, сохранения в ...
... одновременно открывать несколько файлов и быстро переключаться между ними, щелкая по ярлычкам. 5. Практическая часть работы Требовалось создать сайт с одноименным названием курсовой работы, а именно «Сравнительный анализ современных текстовых редакторов». Сайт создан с целью доведения информации о текстовых редакторах до всех желающих. Структура папок для хранения структуры сайта ...
... этой процедуры необходимо иметь: главный документ, содержащий постоянную информацию; документ-источник для хранения переменной информации. 4. Интерфейс текстового редактора MS Word MS WORD - это эффективный и полнофункциональный текстовый редактор, который предоставляет все средства, необходимые для создания документов различных типов. Интерфейс Microsoft Word Полосы прокрутки ...
0 комментариев