Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том1)" -> 124

Visual С++ 6. Полное руководство: В 2 т.(том1) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том1) — Бином, 2006. — 569 c.
Скачать (прямая ссылка): vicualcc2006t1.djvu
Предыдущая << 1 .. 118 119 120 121 122 123 < 124 > 125 126 127 128 129 130 .. 204 >> Следующая

• Чтобы определить стандартное расширение файлов, используемое диалоговыми окнами Open... и Save As..., можно отредактировать строковый ресурс с идентификатором i dr_ma in frame в редакторе ресурсов Developer Studio. Другой способ задания стандартного расширения файла заключается в использовании кнопки Advanced... диалогового окна мастера AppWizard (Step 4) при создании новой программы.
• Перед инициализацией нового документа, открытием существующего или завершением работы программы MFC вызывает функцию DeleteContents класса документа. Для удаления данных документа эту функцию необходимо переопределить.
• Обработчики команд New, Open..., Save, Save As... и списка последних открытых файлов меню File открывают файл, а затем вызывают функцию Serialize класса документа для чтения или записи данных. Функция Serialize также вызывается библиотекой MFC при перетаскивании объекта файла в окно программы или открытии файла двойным щелчком в папке Windows (подразумевается, что программа поддерживает эти методы).
Мастер AppWizard обычно определяет внутри класса документа простейшую функцию Serialize. В нее необходимо добавить код для чтения или записи данных, сохраненных в классе документа.
Функции Serialize передается ссылка на объект класса CArchive, присоединенный к открытому файлу, предоставляющему функции для чтения или записи данных.
Функция Serialize позволяет читать или записывать переменные базовых типов, используя перегруженные операторы « и » применительно к объектам класса CArchive.
Функция Serialize читает или записывает данные объекта, вызывая его собственную функцию Serialize. Если объект принадлежит к определенному классу, необходимо добавить функцию Serialize в тот класс, который читает или записывает данные объекта.
Если класс представления порожден от класса CEditview, мастер AppWizard автоматически добавляет требуемый код в функцию Serialize. В этом коде вызывается функция SerializeRaw класса CEditview.
Вызывая функции Read или Write класса CArchive, можно читать или записывать произвольные блоки данных.
При каждом изменении данных программы класс документа должен вызывать функцию SetModifiedFlag класса CDocument. Вызов этой функции сообщает MFC, что документ изменился. Тогда MFC позволяет сохранить данные на диске перед их удалением из памяти. Если класс представления порожден от класса CEditview, при изменении текста автоматически устанавливается флаг изменений.
Поддержку технологии "drag-and-drop" можно реализовать, поместив в функцию Initlnstance вызов метода DragAcceptFiles объекта главного окна после вызова функции ProcessShellCommand.
Программу можно изменить так, чтобы пользователь мог открыть файл, выполняя двойной щелчок на объекте файла со стандартным расширением (например, .drw) в папке Windows. Для этого поместите вызовы функций EnableShellOpen и RegisterShellFileTypes класса CWinApp внутри функции Initlnstance после вызова метода AddDocTemplate.
Глава 13 Прокрутка и
разделение окон представления
• Добавление средств прокрутки окна
• Добавление средств разделения окна
• Обновление окна представления
• Текст программы MiniDraw
В этой главе показано, как в MFC-программу добавляются возможности прокрутки и разделения окна представления. Прокрутка делает возможным просмотр и редактирование документа, размеры которого превышают размеры окна представления. Разделение позволяет создавать несколько окон представления одного документа и прокручивать его в каждом окне отдельно. Эти два средства добавляются к программе относительно просто (практически вся работа выполняется специальными MFC-классами).
Средства прокрутки и разделения окон будут добавлены в программу MiniDraw — в исходные файлы приложения, созданные в предыдущей главе. Копии этих файлов можно найти в каталоге \MiniDrw3 прилагаемого компакт-диска.
Добавление
средств прокрутки окна_
Если в предыдущей версии программы MiniDraw размеры рисунка превышали размеры окна представления, то можно было просматривать и редактировать только часть рисунка, размещенную внутри окна. Добавим к окну представления вертикальные и горизонтальные полосы прокрутки, а также код, поддерживающий прокрутку. Теперь можно просматривать и редактировать любую часть рисунка, размеры которого больше размеров окна. Добавленные к программе полосы прокрутки показаны на рис. 13.1.
Примечание
В программу MiniEdit средства прокрутки не добавляются, так как класс CEditView, от которого порождается класс представления данной программы, решает эту задачу автоматически.
Измените класс представления программы MiniDraw таким образом, чтобы он порождался от класса CScrollview, а не cview. Как и класс CEditview в программе MiniEdit, специальный класс представления CScrollview порождается от класса общего назначения cview. При порождении класса представления от класса CScrollview полосы прокрутки автоматически добавляются в окно представления и предоставляется большая часть кода для поддержки операций прокрутки. Кроме этого необходимо добавить некоторый собственный код.
Предыдущая << 1 .. 118 119 120 121 122 123 < 124 > 125 126 127 128 129 130 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100