- •Л. Б. Бузюков, о. Б. Петрова
- •Учебное пособие
- •Предисловие
- •Глава 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.9. Мастер классов mfc ClassWizard
Мастер классов MFC ClassWizard используется для формирования служебной части кода класса и для редактирования класса. Простейший способ вызывать Мастер классов – это воспользоваться контекстным меню какого-либо элемента управления.
Окно MFC ClassWizard имеет несколько вкладок Message Maps, Member Variables, Class Info и др.
Message Maps – карта сообщений, связывает в программе сообщение, объект, реагирующий на это сообщение, и функцию, которая выполняется в ответ на это сообщение. При возникновении какого-либо сообщения, например, BN_CLICKED, вследствие нажатия кнопки IDC_BUTTON_MSG вызывается метод OnButtonMsg(); если бы это же сообщение возникло при нажатии другой кнопки, был бы вызван другой метод. При помощи окна Message Maps (рис. 21.3) можно добавить класс (кнопка Add Class…), функцию (Add Function…), отредактировать код функции (Edit Code…), удалить функцию (Delete Function…).
Рис. 21.3. Окно мастера MFC ClassWizard
Member Variables – связывает элементы управления, хранящие какие-либо данные, и переменные, которые являются представителями своих элементов управления в программе. Добавление переменной для элемента управления выполняется в окне Member Variables (рис. 21.4) с помощью кнопки Add Variable…; имя переменной вводится в специальное окно панели Add Member Variable, в начале имени должны быть символы "m_", затем добавляется строка текста, поясняющая связь переменной с элементом управления и ее назначением, например, для окна редактирования IDC_EDIT_RESULT может быть создана переменная с именем m_Result или m_Edit_Result. Для переменной также должен быть установлен тип значения и категория переменной. Категория переменной определяет характер связи между переменной и элементом управления и может принимать одно из двух значений – value или control. Если переменной присвоена категория control, происходит автоматическое обновление значений в переменных при изменении значений, введенных в соответствующие элементы управления, и, наоборот, автоматическое обновление элементов управления, если изменили значения связанные с ними переменные. Если переменной присвоена категория value, автоматического обновления значений не происходит, обновление выполняется функцией UpdateData().
Рис. 21.4. Окно добавления переменной Member Variables.
Следует правильно завершить добавление переменной – нажать кнопку OK для закрытия окна Add Member Variable и кнопку OK для закрытия окна ClassWizard. Игнорирование этих двух кнопок приведет к тому, что переменная не будет добавлена. Обнаружится такая ошибка при компиляции проекта – имя переменной будет неизвестным. Повторное добавление переменной через ClassWizard исправит ошибку.
Class Info – служит для просмотра списка классов, их размещения в файлах и добавления в проект новых классов.
21.10. Установка начального значения элементам управления
Так как набор свойств, устанавливаемых для элементов управления перед запуском программы через окно Properties, ограничен, можно устанавливать начальные значения свойств элементам стандартной функцией OnInitDialog(), которая выполняется один раз при создании диалоговой панели. Редактирование этой функции выполним через ClassWizard следующим образом.
Вызовем ClassWizard, откроем вкладку Message Maps;
В окне Project должно быть установлено имя проекта Lab1, в окне Class name – имя класса диалоговой панели CLab1Dlg;
В окне Object IDs выберем объект – диалоговую панель CLab1Dlg; в окне Messages найдем сообщение WM_INITDIALOG, выделим его, при этом автоматически будет выделена в окне Functions функция OnInitDialog(), так как она уже входит в состав класса диалоговой панели;
Нажмем кнопку Edit Code. После нажатия кнопки в окне редактора откроется модуль, содержащий код этой функции:
BOOL CLab1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
………………
//TODO: Add extra initialization here
return TRUE;
}
Отредактируем код функции OnInitDialog, добавим следующие строки (они будут выделены жирным шрифтом), место вставки нового кода указывает текст //TODO: Add extra initialization here (добавьте дополнительную инициализацию здесь):
BOOL CLab1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
………………
//TODO: Add extra initialization here
m_Result="Начальный текст"; //Установка
//начального значения переменной
UpdateData(FALSE); //Обновление экрана
return TRUE;
}
После запуска такой программы окно редактирования будет содержать слова «Начальный текст».
