ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Параметры классов-шаблоновCMap требует 4 параметра: · тип ключей · если тип ключей структура или класс, то тип аргумента для класса «тип_ключа &», т.е. ссылочный. · тип-значений, сопоставимых ключа в отображении · если тип 3-го параметра структура или класс, то тип аргумента для класса «тип_ значения&», т.е. ссылочный Пример: CMap<int,int,MY_STRUCT, MY_STRUCT&> myMap1; Если в отображении в качестве ключа используется CString, то в качестве 2-го параметра надо указать LPCTSTR. Шаблон-базированые совокупности ссылок требуют своих параметров. Так, CTypedPthArray, CTypedPtrList используют 2 параметра: базовый класс и тип элементов. В 1-м случае в качестве базового класса надо указать: CObArray или CPtrArray, во 2-м случае: CObLisr, CPtrList. Таким образом достаточны операции базовых классов. Класс COb..... указывается, если используются ссылки на классы, выводимы из CObject, а CPtr…… когда ссылки на классы не выводимы из CObject; Параметризированый класс CTypedPtrMap требует 3-х параметров: · базовый класс · тип ключа · тип значений хранимых в совокупности. В качестве базового необходимо указать не шаблон базированный класс, определенный для реализации отображений: CMapPtrToWord, CMapPtrToPtr … Пример CTypedPtrMap<CMapPtrToPtr,CString,MY_STRUCT*> myPtrMap; Определяется совокупность, представления отображение из множества объектов класса CString в указатели на тип MY_STRUCT. Если в качестве типа для значения (3-го параметра) используется класс или структура указатель на них, то необходимо, чтобы соответствующий класс или структура имели копирующий конструктор.. Для реализации итераций над совокупностями необходимо использовать следующие методы: · для массивов GetAt(индекс) · для списков GetNext(размещение), где размещение типа POSITION (тип ссылка для элементов списков) · для отображений GetNetAssoc(размещение, ключ, значение); здесь ключ и значение – переменные, куда будут передаваться ключ и значение. Пример CMap<CString, LPCTSTR,CPerson*,CPerson*> myMap; POSITION pos = myMap.GetStartPosition();//получение начального размещения while (pos!=NULL) CPerson* pPerson; CString str; myMap.GetNextAssoc(pos, str,pPerson); //используем str, pPerson
Для получения размера массива используется GetSize(). Для получения начального размещения элемента в списке: GetHeadPosition(), GetStartPosition(). Для удаления элементов из совокупностей надо итеративно удалить все элементы из совокупности с использованием оператора delete и затем выполнить RemoveAll (). Для удаления отдельных элементов надо вызвать RemoveAt() или RemoveKey() – для отображений Вопросы для самоконтроля · Перечислите классы стандартных блоков диалога! · Как выполнить установку фильтров файлов в классе CFileDialog? · Как выполняется работа с файлами вне библиотеки MFC? · Как выполняется работа с объектом класса CFile? · Перечислите шаблон-базированные классы совокупностей! · Каковы критерии отбора классов структурных типов данных? Вопросы для самостоятельного изучения · Какие операторы позволяют выполнить взаимные преобразования между классом String и типом char *?
Лекция 25. Разработка диалогового приложения в С++. Основной инструментарий Многодокументный интерфейс DevStudio или Visual C++ Окно содержит меню с обычными основными пунктами и несколькими дополнительными, предназначенными для вызова компилятора, отладчика и работы с ресурсами (такими как окна, битовые карты (bitmap) и символьные константы сообщений, надписей и подсказок). В процессе создания программ и окон проекта окно DevStudio делится на такие части:
Любой проект по умолчанию создаётся в 2-х конфигурациях: отладочной(Debug) и с включенными опциями оптимизации по умолчанию (Release). Можно создать дополнительно ещё и свои конфигурации.
Типы проектов Визарды DevStudio помогают создать каркас проекта. Типов проектов достаточно много. На начальных этапах достаточно знание следующих:
Кстати AppWizard разрешает использование Win32API, но с классами, при этом возникают некоторые проблемы с сообщениями об ошибках.
Не нашли, что искали? Воспользуйтесь поиском:
|