- •Л. Б. Бузюков, о. Б. Петрова
- •Учебное пособие
- •Предисловие
- •Глава 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. Создание приложений для ос windows на основе библиотеки mfc
21.1. Обзор классов библиотеки MFC 21.2. Класс CString 21.3. Класс CFile 21.4. Класс CPoint 21.5. Класс CRect 21.6. Создание приложений на основе библиотеки MFC в VC++ 6.0 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
21.1. Обзор классов библиотеки mfc
Библиотека MFC (Microsoft Foundation Classes) включает большое количество классов, многие из которых связаны друг с другом механизмом наследования (рис. 21.1).
Рис. 21.1. Диаграмма классов библиотеки MFC
Классы MFC можно разделить на две группы: общего назначения и предназначенные для создания интерфейса пользователя [19].
Классы общего назначения:
CString – последовательность символов, для которой определены некоторые методы и операции;
CFile – средство для работы с файлами на диске.
Классы для создания пользовательского интерфейса:
CDialog – диалоговые панели,
CButton – кнопки,
CStatic – статические строки,
CEdit – окна для редактирования текста.
21.2. Класс cString
Класс CString – удобное средство для работы со строками. В отличие от языка C, где работа со строковыми данными сводится к использованию массивов символов, ограниченных конечным нулем, а действия над строками осуществляются через указатели на строки, класс CString позволяет создать строковую переменную, аналогичную переменной типа string в языке Pascal. CString не имеет базового класса.
Класс CString содержит последовательность символов переменной длины и набор функций и операций над ней. Тип символа – TCHAR, т. е. если в программе используется двухбайтный символ (определен макрос _UNICODE), то тип символа устанавливается как WCHAR, в противном случае тип символа определяется как char.
В класс CString включено несколько конструкторов, в том числе конструктор по умолчанию, конструктор с параметрами, копирующий конструктор, при создании строк нет необходимости заботиться о выделении достаточного объема памяти для них, выделение памяти производится автоматически.
Примеры конструирования строковых объектов:
Cstring str; //Конструктор по умолчанию создает
//пустую строку
CString str1,str2;
CString str3("Строка символов"); //Конструктор с
//параметрами помещает в строку str3 значение
//своего аргумента
CString str4=str3; //Создание строки и ее
//инициализация
CString str5 = "123456"; //заданным значением
CString str6(str5); //Копирующий конструктор
//создает копию переменной типа CString
В класс CString включены операции над строками.
Присваивание:
str="Строка";
str1=str;
Конкатенация строк (сложение):
str1="Библиотека";
str2="MFC";
str=str1 + " " + str2;
Доступ к отдельному символу строки через его порядковый номер:
char ch=str[1]; //начало отсчета – индекс 0
str[2]='4';
Следует заметить, что для выполнения действий над отдельными символами лучше применять специальные функции класса GetAt() и SetAt():
str.GetAt(1); //Чтение символа с индексом 1,
str.SetAt(2,'7'); //Запись символа '7' вместо
//символа с индексом 2.
Сравнение строк (используются перегруженные операторы отношения <, >, <=, >=, ==, !=):
if (str1>str2)
str=str1;
else
str=str2;
Вставка объекта в поток (оператор <<):
cout << str1;
Извлечение объекта из потока (оператор >>):
cin >> str1;
В класс CString включены разнообразные функции для обработки строковых данных (табл. 21.1).
Таблица 21.1
Методы класса CString |
Выполняемые действия |
GetLength() |
Возвращает число символов, хранимых в объекте |
GetBuffer() |
Возвращает указатель на буфер объекта, что позволяет использовать его в обычных функциях языка C, имеющих в качестве параметра указатель на строку |
ReleaseBuffer() |
Освобождает буфер, распределенный Выполняемые действияметодом GetBuffer() |
Compare() |
Сравнивает две строки с учетом регистра букв |
CompareNoCase() |
Сравнивает две строки без учета регистра букв |
GetAt() |
Возвращает символ в заданной позиции |
SetAt() |
Устанавливает символ в заданную позицию |
Find() |
Находит подстроку и возвращает индекс ее первого символа |
Format() |
Преобразует данные других типов в текст, подобно функции sprintf() |
MakeLower() |
Преобразует все символы в строчные |
MakeUpper() |
Преобразует все символы в прописные |
MakeReverse() |
Обращает порядок символов в строке |
Left() |
Выделяет заданное количество самых левых символов в строке |
Right() |
Выделяет заданное количество самых правых символов в строке |
Insert() |
Вставляет подстроку в строку |
Delete() |
Удаляет указанные символы из строки |
Преобразование данных в переменную типа CString:
CString str="Число";
str.Format("%s %d",str,123);
В переменную str записывается слово. Функция Format имеет три параметра: первый представляет собой строку формата, остальные – список помещаемых в строку значений. Спецификаторы преобразования строки формата должны соответствовать типу соответствующих им аргументов. Так, первый спецификатор %s соответствует строковой, второй %d – целочисленной переменным. В результате преобразования в переменной str будет находиться строка: "Число 123". При применении других методов класса CString следует обратиться к контекстной подсказке VC++ или к справочной системе MSDN.
