КУРСОВАЯ РАБОТА
по дисциплине: «Высокоуровневые методы информатики и программирования»
на тему: Текстовый редактор
ПЛАН
1.Введение
2.Работа с текстовыми документами
3.Класс CEdit
4.Описание работы программы
5.Заключение
6.Список использованных источников
7.Приложение «Текстовый редактор»
1.ВВЕДЕНИЕ
В начале семидесятых консорциум очень умных людей разрабатывал компьютерную систему Muitix. Ее предназначением было обеспечение недорогого всеобщего доступа к графическим, текстовым и другим файлам. Конечно, это была совершенно глупая идея, и в целом проект провалился. Небольшая группа инженеров, работающих в лабораториях Белла, решила использовать фрагменты Muitix в небольшой операционной системе, которую окрестили Unix.
Эти инженеры не имели одной большой мощной машины, а лишь несколько маломощных машин разных производителей. Поскольку все они были разные, каждую программу требовалось перерабатывать под каждую машину. Чтобы избежать этих мучений, был разработан небольшой, но мощный язык, который назвали С.
Язык С оказался действительно мощным и очень скоро завоевал передовые позиции среди средств разработки программного обеспечения. Однако со временем в программировании появились новые технологии (например, достойное самого большого внимания объектно-ориентированное программирование), которые постепенно вытесняли язык С. Не желая остаться за бортом, инженерное сообщество усовершенствовало С, дополнив его новыми возможностями и получив в результате новый язык программирования C++. Язык C++ включает:
· словарь понятных для людей команд, которые конвертируются в машинный язык;
· структуру языка (или грамматику), которая позволяет пользователям составлять из команд работающие программы.
В курсовой работе по предмету ВУМИП мне было необходимо сделать текстовый редактор на языке VisualC++.
Разрабатываемый мною текстовый редактор является созданным мастером MFC Application Wizard приложением, которое поддерживает архитектуру документ-представление. Программа должна обеспечивать ввод и редактирование текста в окне представления и отображать полосы прокрутки. Меню программы должно содержать команды печати, отмены последних действий, относящихся к редактированию, команды вырезания, копирования и вставки текста, а также поиска. Для реализации операций ввода и редактирования текста внутри окна представления необходимо класс представления сделать производным от MFC-класса CEditView. При этом меню приложения будет содержать набор команд редактирования, и программисту не потребуется писать код для данных функций.
2. РАБОТА С ТЕКСТОВЫМИ ДОКУМЕНТАМИ
Специалисты Microsoft считают текстовые документы единственным достойным объектом своей работы. Вся операционная система разрабатывалась именно для работы с данным типом документов. Поэтому, рассматривая Visual C++, нельзя обойти молчанием эту область его применения.
Однако вследствие своей любви к написанию редакторов создатели Visual C++ самостоятельно разработали два типа редакторов, обеспечив их всеми необходимыми с их точки зрения функциями и, посчитав свои творения совершенством, практически исключили всякое вмешательство в их работу со стороны пользователя. Эти редакторы реализованы в объектах классов CEdit и CRichEditview. Первый из них представляет собой простейший редактор, используемый в текстовых полях диалоговых окон, и не предусматривает форматирования текста и использование различных шрифтов. Все эти возможности имеются в текстовом редакторе, реализованном в классе CRichEditview. Возможности, предоставляемые этим редактором, наглядно продемонстрированы в текстовом редакторе WordPad, являющемся примером использования данного класса, текст которого можно найти в библиотеке MSDN.
3. КЛАСС CEDIT
Объект класса CEdit обеспечивает функционирование элемента управления текстового поля Windows. Текстовое поле Windows представляет собой прямоугольное дочернее окно, в которое пользователь может вводить текст. Данный элемент управления может создаваться в шаблоне диалога или непосредственно в программе пользователя. В обоих случаях сначала вызывается конструктор класса CEdit, создающий объект данного класса, а затем вызывается функция Create, создающая текстовое поле Windows и связывающая его с объектом класса CEdit. Объект класса, производного от класса CEdit может быть создан за один шаг, если в его конструкторе будет вызвана функция Create. Объект класса CEdit наследует многие возможности объекта класса CWnd. Чтобы записать текст в объект класса CEdit, используется функция CWnd::SetWindowText, а чтобы считать его оттуда используется функция CWnd::GetWindowText. Эти функции позволяют записать или считать весь текст, содержащийся в данном элементе управления даже в том случае, когда он является многострочным. В том случае, если данный элемент управления является многострочным, в нем могут использоваться следующие функции для работы с частью содержащегося в нем текста: CEdit::GetLine, CEdit::SetSel,
CEdit::GetSel и CEdit::ReplaceSel. Чтобы обработать сообщение, посылаемое текстовым полем своему родительскому окну (обычно это объект класса, производного от CDialog), добавьте соответствующий макрос в карту сообщений и создайте функцию для обработки данного сообщения. Макрос карты сообщений для данного типа сообщений имеет следующий формат:
ON_Notification(id, memberFxn)
где id - идентификатор дочернего окна элемента управления, посылающего сообщение, а memberFxn - имя функции обработки данного сообщения в классе родительского окна. Прототип функции обработки сообщения имеет следующий формат:
afx_msg void memberFxn();
Ниже приведен список макросов карты сообщений, которые могут использоваться для обработки сообщений, посылаемых данным элементом управления:
ON_EN_CHANGE - пользователь произвел действие, которое может привести к изменению текста, содержащегося в текстовом поле. В отличие от сообщения EN_UPDATE данное сообщение посылается после того, как Windows произведет обновление экрана; ON_EN_ERRSPACE - для данного текстового поля не может быть выделен необходимый для него объем памяти; ON_EN_HSCROLL - пользователь воспользовался горизонтальной полосой прокрутки данного элемента управления. Сообщение посылается родительскому окну до обновления экрана; ON_EN_KILLFOCUS - данное текстовое поле потеряло фокус ввода; ON_EN_MAXTEXT - текущая вставка привела к превышению определенного в данном объекте максимального числа символов, что привело к ее урезанию. Данное сообщение посылается также в том случае, если текстовое поле не имеет стиля ES_AUTOHSCROLL, а количество символов в текущей строке превышает ширину текстового поля. Другим случаем, когда посылается данное сообщение, является случай, когда текстовое поле не имеет стиля ES_AUTOVSCROLL, а количество строк в нем превышает высоту текстового поля, или же текстовое поле не имеет стиля ES_AUTOHSCROLL, а количество символов в текущей строке превышает ширину текстового поля; ON_EN_SETFOCUS - данное текстовое поле получило фокус ввода; ON_EN_UPDATE - в текстовом поле будет выводиться измененный текст. Посылается после того, как элемент управления отформатирует текст, но до того, как этот текст будет выведен в текстовое поле, что позволяет изменить размеры текстового поля в случае необходимости; ON_EN_VSCROLL - пользователь воспользовался вертикальной полосой прокрутки данного элемента.При создании объекта класса CEdit в диалоговом окне этот объект автоматически уничтожается при закрытии диалогового окна. То же самое происходит и в том случае, когда объект класса CEdit создается в шаблоне диалога. Если объекта класса CEdit создается в окне, то от пользователя может потребоваться его уничтожить. Если же объект класса CEdit создается в стеке, то он уничтожается автоматически. При создании объекта класса CEdit в куче с использованием оператора new его необходимо уничтожить после завершения работы пользователя с элементом управления Windows с использованием оператора delete. Если в объект класса, производного от CEdit, была распределена какая-либо память, то необходимо перегрузить деструктор данного класса таким образом, чтобы он освобождал эту память. Описание данного класса содержится в файле заголовка afxwin.h.
4. ОПИСАНИЕ РАБОТЫ ПРОГРАММЫ
После запуска программы появляется окно «EditApp». Так выглядит внешний вид программы.
Меню Файл имеет следующие пункты: Новый, Открыть, Закрыть, Сохранить, Сохранить как, Печать, Предварительный просмотр, Настройка печати, Выход.
Меню Правка имеет следующие пункты: Отменить, Вырезать, Копировать, Вставить, Поиск.
Поиск: Выбрав это меню выскочить окно поиска, куда нужно ввести искомое слово и нажать ОК.
Результат поиска
Меню Вид имеет следующие пункты: Панель инструментов, Строка состояния, т.е по желанию их можно скрыть.