Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОВРЕМЕННЫЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ.docx
Скачиваний:
15
Добавлен:
01.04.2025
Размер:
797.27 Кб
Скачать

Глава 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.