- •Л. Б. Бузюков, о. Б. Петрова
- •Учебное пособие
- •Предисловие
- •Глава 1. Введение в язык с
- •1.1. История создания и особенности языка с
- •1.3. Элементы языка с
- •1.3.1. Основные символы
- •1.3.2. Ключевые слова
- •1.3.3. Идентификаторы
- •1.3.4. Константы
- •1.3.5. Лексемы
- •1.3.6. Комментарии
- •Глава 2. Типы данных языка c
- •2.1. Числовые типы данных
- •2.2. Объявление переменных
- •2.3. Данные целого типа
- •2.4. Данные вещественного типа
- •Глава 3. Выражения
- •3.1. Операции
- •3.1.1. Арифметические операции
- •3.1.2. Операция присваивания
- •Глава 4. Составление простейших программ
- •4.1. Препроцессор и его функции
- •4.2. Основные директивы препроцессора
- •4.2.1. Директива include
- •4.2.2. Директива define
- •4.2.3. Директива undef
- •4.3. Структура и правила составления программ
- •4.3.1. Структура функции
- •4.3.2. Функция main()
- •4.3.3. Структура простой программы
- •4.3.4. Правила записи объявлений, операторов и комментариев
- •4.3.5. Пример простейшей программы
- •Глава 5. Средства ввода/вывода
- •5.1. Общие замечания
- •5.2. Функция форматированного вывода printf()
- •5.2.1. Основные форматы
- •5.2.2. Модификации форматов
- •5.3. Функция форматированного ввода scanf()
- •Глава 6. Управляющие операторы
- •6.1. Условные операторы
- •6.1.1. Логические выражения
- •6.1.2. Формы оператора if
- •6.1.3. Оператор выбора switch
- •6.2. Операторы цикла
- •6.2.1. Оператор while
- •6.2.2. Оператор for
- •6.2.3. Оператор do-while
- •6.3. Операторы перехода
- •6.3.1. Оператор break
- •6.3.2. Оператор continue
- •6.3.3. Оператор return
- •6.3.4. Применение оператора goto и меток
- •Глава 7. Функции
- •7.1. Основные понятия
- •7.2. Определение функции
- •7.3. Прототип функции
- •7.4. Вызов функции
- •Глава 8. Классы памяти
- •8.1. Логическаяструктура памяти программы
- •8.2. Особенности классов памяти
- •8.3. Объявления переменных
- •8.4. Объявления функций
- •8.5. Время жизни и область видимости программных объектов
- •8.6. Инициализация глобальных и локальных переменных
- •Глава 9. Указатели
- •9.1. Операция получения адреса
- •9.2. Операции над указателями
- •Глава 10. Массивы
- •10.1. Общие сведения о массивах
- •10.2. Одномерные массивы
- •10.3. Двумерные массивы
- •10.4. Массивы и указатели
- •10.5. Массивы и функции
- •Глава 11. Строки
- •11.1. Представление символьной строки при помощи одномерного массива
- •11.2. Указатель на символьную строку
- •11.3. Ввод/вывод символьных строк
- •11.4. Массивы символьных строк
- •11.5. Функции работы состроками
- •Глава 12. Структуры
- •12.1. Определение структуры
- •12.2. Структуры и функции
- •12.3. Указатели на структуру
- •12.4. Массивы структур
- •12.5. Вложенные структуры
- •12.6. Использование синонима типа
- •12.7. Объединения
- •Глава 13. Файлы
- •13.1. Работа с файлами
- •13.2. Функции ввода/вывода
- •Глава 14. Динамическая память
- •14.1. Распределение памяти
- •14.2. Функции управление памятью
- •Глава 15. Проект
- •15.1. Основы создания проекта
- •15.2. Пример создания проекта
- •Глава 17. Основы объектно-ориентированного программирования
- •17.1. Объектно-ориентированный подход
- •17.3. Конструкторы и деструкторы
- •17.4. Инкапсуляция
- •17.5. Полиморфизм
- •17.6. Наследование
- •17.7. Виды взаимодействия классов
- •17.8. Способы графического представления объектно-ориентированной задачи
- •18.2. Библиотека Win32 api
- •18.3. Библиотека owl
- •18.4. Библиотека vcl
- •18.5. Библиотека clx
- •18.6. Библиотека mfc
- •18.7. Библиотека OpenGl
- •19.3. Создание проекта
- •19.4. Редактирование проекта
- •19.5. Компиляция и выполнение программы
- •19.6. Файловая структура проекта
- •19.7. Создание консольного приложения
- •Глава 20. Разработка приложений для операционных систем windows
- •20.1. Взаимодействие программы и Windows
- •20.2. Компоненты библиотеки Win32 api
- •20.3.Функция WinMain()
- •20.4. Оконная процедура
- •20.5. Структура программы для ос Windows
- •20.6. Ресурсы Windows
- •20.7. Взаимодействие прикладной программы и устройств в Windows
- •Глава 21. Создание приложений для ос windows на основе библиотеки mfc
- •21.1. Обзор классов библиотеки mfc
- •21.2. Класс cString
- •21.3. Класс cFile
- •21.4. Класс cPoint
- •21.5. Класс cRect
- •21.7. Приложение, основанное на диалоге
- •21.8. Использование в приложении элементов управления
- •21.9. Мастер классов mfc ClassWizard
- •21.10. Установка начального значения элементам управления
- •21.11. Элементы управления Picture
- •21.12. Элемент управления Group Box
- •21.13. Элемент управления Radio Button
- •21.14. Элемент управления Check Box
- •21.15. Элемент управления List Box
- •21.16. Создание меню
- •21.17. Приложение с двумя диалоговыми панелями
- •21.18. Приложение sdi
- •21.19. Создание панели инструментов
- •21.20. Приложение mdi
- •21.21. Контекстыустройств в mfc
- •21.22. Графические объекты Windows в mfc
- •21.23. Графические операции в mfc
- •П.1. Основы методологии конструирования программ
- •П.1.1. Основные понятия. Программа и алгоритм
- •П.1.2. Этапы разработки программ
- •П.2. Алгоритмы
- •П.2.1. Алгоритм и его свойства
- •П.2.2. Способы описания алгоритмов
- •П.2.3. Средства графического изображения алгоритмов Схемы алгоритмов
- •Псевдокоды
- •Структурограммы
- •П.3. Основные приемы программирования
- •П.3.1. Разновидности структур программирования
- •П.3.2. Программирование линейных и разветвляющихся процессов
- •П.3.3. Программирование циклических процессов
- •Арифметический цикл (цикл с параметром)
- •Итерационный цикл
- •Вложенный цикл
- •Литература
21.18. Приложение sdi
Познакомимся с более сложным приложением, использующим библиотеку MFC, которое называется SDI-приложение (приложение с интерфейсом одного документа), обычно основанное на архитектуре «документ/представление». В таком приложении данные приложения («документ») хранятся в объекте одного класса – класса документа, а форма для отображения документа («представление») является объектом другого класса – класса представления. Таким образом, данные отделены от формы их отображения, что позволяет легко изменять внешний вид документа и при этом не затрагивать структуру данных.
Рассмотрим по шагам процесс создания каркаса SDI-приложения с именем Lab2.
1. Вызов команды File/New…
2. Настройка параметров проекта в окне AppWizard/Projects:
тип приложения – MFC AppWizard (exe),
имя проекта (Name),
размещение проекта (Location),
флажок создания нового рабочего пространства установлен,
нажать OK, в результате начнет работу мастер MFC AppWizard.
3. Первый шаг мастера: выбор варианта приложения – Single document, использовать для ресурсов по умолчанию английский язык, поддержка архитектуры «документ/представление» (Document/View architecture support).
4. Второй шаг: выбор поддержки баз данных; оставим настройку по умолчанию – поддержка баз данных отсутствует (None).
5. Третий шаг: поддержка составного документа – также оставим настройки по умолчанию.
6. Четвертый шаг предлагает включить в документ различные элементы интерфейса пользователя:
Docking toolbar – плавающая панель инструментов,
Initial status bar – строка состояния,
Printing and print preview – печать и предварительный просмотр,
Context-sensitive help – контекстная подсказка,
3D controls – объемные элементы управления, а также указать количество документов, хранимых в буфере недавно использованных файлов. Кнопка Advanced позволит задать расширение, которое будет присваиваться файлам, созданным этим приложением (File extention – txt, например), заголовок окна приложения (Main frame caption), фильтр для файлов (Filter name). На вкладке Windows Styles выбираются параметры главного окна приложения: рамка (Thick frame), кнопки максимизации (Maximize box) и минимизации окна (Minimize box), системное меню (System menu).
7. Пятый шаг позволяет выбрать стиль проекта – оставим по умолчанию MFC Standard, а также включить комментарии (file comments) в исходный текст программы.
8. Шестой шаг информирует о включении в проект классов MFC:
CLab2View – пользовательский класс представления документа, созданный на базе стандартного класса MFC CView,
CLab2App – пользовательский класс приложения, созданный на базе стандартного класса MFC CWinApp, используется для создания объекта приложения,
CMainFrame – класс MFC для создания главного окна, производный от стандартного класса MFC CFrameWnd,
CLab2Doc – пользовательский класс документа, производный от стандартного класса MFC CDocument.
На этом шаге можно изменить класс представления, для этого следует выбрать в качестве базового один из классов, предлагаемых в списке Base class. Чтобы получить готовое к употреблению приложение, выберите в качестве базового класс CEditView, который позволит вам автоматически получить простейший текстовый редактор. Этот редактор будет выполнять функции сохранения, открытия файлов, печати, копирования фрагментов текста. В интерфейс пользователя будут включены строка состояния, главное меню и панель инструментов.
Кроме набора классов в каркас приложения включаются ресурсы: иконки, меню, строки. По умолчанию язык ресурсов – английский. Чтобы работать над приложением дальше, следует изменить язык ресурсов на русский.
Следующий этап создания приложения – редактирование ресурсов. Рассмотрим редактирование таблицы строк String Table.
Двойной щелчок на ресурсе открывает таблицу, состоящую из трех столбцов: ID – идентификатор строки, Value – целое число (дескриптор), определяющее строку, Caption – содержимое строки.
Отредактируем строку IDR_MAINFRAME, которая определяет содержание строки заголовка окна редактора и название типа документа, используемое при сохранении, открытии документа и т. д.
По умолчанию для проекта, имеющего имя Lab2, строка IDR_MAINFRAME выглядит так:
Lab2\n\nLab2\n\n\nLab2.Document\nLab2 Document
Строка состоит из нескольких строк, разделенных символом перевода строки \n. Таких строк семь. Они могут быть пустыми, иметь значения по умолчанию или их можно отредактировать. Вариант редактирования строки IDR_MAINFRAME приведен в табл. 21.4.
Таблица 21.4
№ строки |
Текст по умолчанию |
Назначение |
Текст после редактирования |
1 |
Lab2 |
Заголовок главного окна приложения, например, название редактора |
Редактор |
2 |
|
Имя файла, которое присваивается новому документу по умолчанию |
Текст |
3 |
Lab2 |
Имя типа документа |
txt |
4 |
|
Описание типа документа и его фильтра. Эта строка используется в стандартных диалогах Open и Save as |
txt Files (*.txt) |
5 |
|
Расширение типа документа |
.txt |
6 |
Lab2.Document |
Идентификатор типа документа, хранящийся в реестре Windows |
Txt.Document |
7 |
Lab2 Document |
Имя типа документа, хранящееся в реестре Windows |
Txt Document |
Если в качестве класса представления выбран класс CEditView, то в результате получаем простейший текстовый редактор, выполняющий создание, сохранение и открытие текстового документа, и работающий с буфером обмена. Следует заметить, что тип файла *.txt соответствует выбранному классу документа CEditView.
