Меню Окно имеет следующие пункты: Новое окно, Каскадом, Заголовками, Сортировать иконки, за разделителем располагаются имена открытых файлов, а галочкой помечается тот файл, с которым работают. При создание нового документа окно открывается прямо в программе, а не в новом файле. По желанию пользователь может расположить их каскадом или заголовками для удобства работы.
Меню Помощь содержит информацию о программе.
5. ЗАКЛЮЧЕНИЕ
В ходе выполнения курсовой работы предоставленная программа была выполнена и работала. Конечно это простой текстовый редактор и у него мало функций по сравнению с MSWORD. Он чем-то похож на простой блокнот.
Единственное его отличие что он был написан на языке С++. Язык С++ работал без наладок, был прост в обращении, возникающие ошибке при программировании легко исправлялись. С++ зарекомендовал себя с лучшей стороны, и я бы порекомендовал его как для начинающих программистов так и для профессионалов.
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(). Выделенный полужирным шрифтом тектс отвечает за поиск слов в тексте.