Научная электронная библиотека
Монографии, изданные в издательстве Российской Академии Естествознания

ПОСТРОЕНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ НЕПРЕРЫВНОГО ОБРАЗОВАНИЯ НА ОСНОВЕ ИНТЕРНЕТ-ТЕХНОЛОГИЙ

Дьяченко А. В., Манжула В. Г., Попов А. Э., Семенихин И. Н., Толстобров А. П.,

2.1.5 Уровень архитектуры

На данном уровне структурной модели АСКК представлена детализа­ция основных методов классов, реализующих их интерфейс и бизнес-логику.

1) Интерфейс АСКК.

Логика и средства представления данных автоматизированной ситемы конвертирования контента основана на классе представления CMyKonvertView, который наследуется от базового класса CView библиотеки MFC.

Метод OnDraw вызывается, когда надо отобразить документ в окне. В качестве параметра pDC методу OnDraw передается указатель на контекст устройства, используя который надо отобразить документ. Виртуальные ме­тоды OnPrepare, OnBeginPrinting и OnEndPrinting вызываются, если пользо­ватель желает распечатать документ, отображенный в данном окне просмотра. На время отладки приложения в состав класса CMyKonvertView включа­ются переопределения виртуальных методов AssertValid и Dump. При окон­чательном построении приложения эти методы не переопределяются.

Класс CTreeCtrl предназначен для визуализации и манипулирования контентом иерархической структуры данных. CTreeCtrl отображает иерархи­ческий раскрывающийся список заголовков в документа. Щелкая пункт, пользователь может расширить и уменьшить связанный список подэлементов Каждый пункт состоит из этикетки и дополнительного bitmapp-образ.

Для управления главным окном приложения используется класс CMainFrame, определенный в файле MainFrm.h. Класс CMainFrame наследу­ется от базового класса CMDIFrameWnd. Создание главного окна контроли­руется при обработке сообщения WM_CREATE методом OnCreate. Метод OnCreate сначала вызывает метод OnCreate базового класса CMDIFrameWnd, а затем создает и отображает внутри главного окна панель управления Toolbar и панель состояния Status Bar. Виртуальный метод PreCreateWindow определен в классе CWnd. Он вызывается непосредственно перед созданием окна, связанного с объектом класса и используется для задания параметров и характеристик окна. В качестве параметра этому методу передается структу­ра типа CREATESTRUCT, определяющая характеристики создаваемого окна. Приложение может изменить данные, записанные в этой структуре, чтобы переопределить стили создаваемого окна и повлиять на внешний вид созда­ваемого окна. MFC AppWizard переопределяет этот метод, но не вносит в не­го в изменений и просто вызывает метод PreCreateWindow базового класса CMDIChildWn d.

Класс, непосредствено связанный с отображением дочерних окон MDI, называется CChildFrame, и он наследуется от базового класса CMDIChildWnd, определенного в библиотеке MFC. Объекты класса пред­ставляют дочерние окна MDI главного окна приложения. Внутри этих окон отображаются окна просмотра документов.

2) Элементы управления.

Класс CButton содержит методы для работы с кнопками Windows. Дан­ный элемент управления может использоваться самостоятельно или в груп­пах. К какому из данных типов кнопок будет относиться объект класса CButton, определяется ее стилем, задаваемым в функции Create при его соз­дании.

Наиболее часто в качестве макросов обработки сообщений от кнопок используются:

  • ON_BN_CLICKED - пользователь нажал кнопку;
  • ON_BN_DOUBLECLICKED - пользователь дважды нажал кнопку.int GetCheck() const - возвращает собственное состояние флажка или переключателя. Возвращаемое значение может принимать одно из значений: 0 - кнопка не выбрана; 1 - кнопка выбрана; 2 - кнопка в неопределенном со­стоянии. Если кнопка не является ни переключателем, ни флажком, возвра­щается 0.

void SetCheck(int nCheck) - устанавливает собственное состояние флаж­ка или переключателя. Значения задаются из набора: 0 - невыбранное; 1 - выбранное; 2 - неопределенное.

Класс CScrollBar является оболочкой для полос прокрутки. Полосы прокрутки аналогичны тем, которые добавляются в главное окно приложения при использовании оконных стилей WS_VSCROLL и WS_HSCROLL. Полоса прокрутки создается вызовом CScrollBar::Create.

Объекты класса CToolBar представляют собой панели управления, представляющие собой ряд кнопок, на которых помещены битовые образы, между которыми могут находиться разделители. Кнопки панели инструмен­тов могут действовать как обычные кнопки, переключатели или флажки. По умолчанию кнопки панели инструментов имитируют простые кнопки. Одна­ко они могут имитировать также и переключатели и флажки. Флажки имеют три состояния: установлен, сброшен и неопределенное. Переключатели име­ют только два состояния: установлен и сброшен. Для установки стиля от­дельной кнопки или разделителя без обращения к массиву сначала необходимо вызвать функцию GetButtonStyle, чтобы получить ее текущее состояние, а затем вызвать функцию SetButtonStyle вместо вызова функции SetButtons. Функцию SetButtonStyle целесообразно использовать при изменении стиля кнопки в процессе работы с приложением. Если необходимо, чтобы в кнопке появился текст, вызовите функцию GetButtonText, чтобы получить текст, ко­торый должен быть выведен в кнопке, а затем вызовите функцию SetButtonText для установки текста.

3) Диалоги.

Объекты класса CFileDialog представляют диалоговые панели Open или Save As в зависимости от параметра bOpenFileDialog. Если параметр bOpenFileDialog содержит значение TRUE, то создается объект, управляю­щий диалоговой панелью Open, а если FALSE - диалоговой панелью Save As.

Параметр bOpenFileDialog является единственным обязательным пара­метром, который необходимо указать. Остальные параметры конструктора класса CFileDialog задают различные режимы работы панели и могут не ука­зываться.

Чтобы создать объект класса CFileDialog , представляющий диалого­вую панель для открытия файлов (mFileOpen), и объект, представляющий диалоговую панель для сохранения файлов (mFileSaveAs), можно воспользо­ваться следующими вызовами конструктора класса:

  • CFileDialog mFileOpen(TRUE) - для панели открытия файлов;
  • CFileDialog mFileSaveAs(FA LSE) - для панели сохранения файла.

Создание объекта класса CFileDialog еще не вызывает отображения со­ответствующей диалоговой панели. При вызове метода DoModal для ранее созданного объекта класса CFileDialog на экране открывается соответствую­щая диалоговая панель. После того, как пользователь завершает работу с диалоговой панелью, метод DoModal вернет значение IDOK или IDCANCEL в случае успешного завершения и нуль - в случае возникновения ошибок:

CFileDialog dlgOpen(TRUE); int iResult=dlgOpen.DoModal().

После того, как пользователь закроет диалоговую панель и метод DoModal вернет управление, можно воспользоваться другими методами класса CFileDialog, чтобы определить имена выбранных файлов:

  • GetPathName - определяет полный путь файла;
  • GetFileName - определяет имя выбранного файла;
  • GetFileExt - определяет расширение имени выбранного файла;
  • GetFileTitle - позволяет определить заголовок выбранного файла;
  • GetNextPathName - если диалоговая панель позволяет выбрать сразунесколько файлов, то этот метод можно использовать для определе­ния полного пути следующего из выбранных файлов;
  • GetReadOnlyPref - позволяет узнать состояние атрибута «только длячтения» (read-only) выбранного файла;
  • GetStartPosition - возвращает положение первого элемента из спи­ска имен файлов.

Кроме основных классов создается также класс CAboutDlg, наследован­ный от базового CDialog. Он отвечает за диалоговую панель «О программе».

4) Логика данных АСКК.

Логика данных системы представлена классами-обертками интерфей­сов СОМ-объектов модели Microsoft Word. Поэтомк класс CMyKonvertDoc использует пространство имен исполняющей среды Microsoft .NET:

Microsoft.Office.Tools.Word

Объект Microsoft.Office.Interop.Word::Document является основой для программирования в Word. Он представляет документ и все его содержимое. При открытии документа или создании нового документа создается новый объект Microsoft.Office.Interop.Word::Document, который добавляется в кол­лекцию Documents объекта Application. Документ, в котором находится фо­кус, называется активным документом. Он представляется свойством ActiveDocument объекта Application. Список коллекций, входящих в состав объекта Document: Bookmarks, Characters (Range), CommandBars, Comments,

DocumentProperties, Endnotes, Fields, Footnotes, FormFields, Frames, Hyper-links, Indexes, InlineShapes, HorizontalLineFormat, ListParagraphs, Lists, List-Paragraphs, Range, ListTemplates, ListLevels, Font, Paragraphs, Proofread-ingErrors (Range), Revisions, ReadabilityStatistics, Scripts, Sections, Sentences (Range), Shapes, StoryRanges (Range), Styles, Subdocuments, Tables, Variables, Versions, Windows, Words (Range).

Объект CaptionLabel - член коллекции CaptionLabels. CaptionLabels(index) используется чтобы возвратить номер уровня заголовка - единственный объект CaptionLabel. Число индекса представляет положение заголовка в коллекции CaptionLabels.

Класс CBitmap (пространство имен: System.Drawing) инкапсулирует то­чечный рисунок GDI+, состоящий из данных точек графического изображе­ния и атрибутов рисунка. Объект Bitmap используется для работы с изобра­жениями, определяемыми данными точек. Можно создать изображения из файлов, потоков и других источников, используя один из конструкторов Bitmap, и сохранить их в поток или файловую систему с помощью метода Save. Изображения отрисовываются на экране или в памяти с помощью ме­тода DrawImage объекта Graphics.

Свойство Paragraphs возвращает ссылку на коллекцию абзацев в дан­ном документе. Класс CParagraph отвечает за хранение и использование та­ких параметров как текст, его цвет, шрифт и стиль выравнивания для каждо­го абзаца текста.

Свойство Tables представляет коллекцию таблиц документа CTables в пространстве имен System.Web.UI.WebControls. TableCell - элемент содержи­мого потока, который определяет ячейку содержимого в рамках Table. Про­странство имен: System.Windows.Documents. Элемент TableCell является единственным элементом таблицы, непосредственно размещающим содер­жимое. Прочие элементы таблицы (Table, TableColumn, TableRowGroup и TableRow) существуют для определения структурных атрибутов таблицы.

Класс CRange (пространство имен Microsoft.Office.Tools.Word) инкап­сулирует интерфейс объекта Range, который играет ведущую роль в процессе структурного анализа документа. Документы, поддокументы, разделы, все вышеупомянутые коллекции от Characters до Words имеют метод или свой­ство Range, возвращающие в качестве результат объект Range. Так, если не­который объект вызвал метод Range, то возвращаемый объект Range будет содержать область определения объекта, вызвавшего метод. Каждый объект Range задает область определения некоторого объекта, включая текст и все объекты, связанные с этим текстом - комментарии, ссылки и прочее. Метод Copy, не имеющий параметров, копирует объект (содержимое области) в бу­фер. Метод Cut, действуя аналогично, копирует объект в буфер, заодно уда­ляя его. Метод Paste позволяет приклеить объект, помещенный в буфер.

Шаблон класса-контейнера vector<> содержится в стандартной биб­лиотеке STL. Тип vector - это коллекция объектов одинакового типа, каждо­му из которых присвоен целочисленный индекс. Это тип контейнера, очень похожий на динамический массив. Позволяет выполнять обращение к произ­вольному элементу по его индексу. Инстанциализация шаблона Vector<CString> - контейнер текстовых строк-переменных типа CString. В таком случае для каждого элемента класса CString определены собственные конструкторы и для создания инициализирующего значения элемента биб­лиотека использует стандартный конструктор класса.


Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»
(Высокий импакт-фактор РИНЦ, тематика журналов охватывает все научные направления)

«Фундаментальные исследования» список ВАК ИФ РИНЦ = 1.074