Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по Леонову, 5семестр.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
503.3 Кб
Скачать

32. Классы CimageList и ClistCtrl. Класс cImageList

CObject CImageList

Список изображений – мощное средство поддержки работы с бол. кол-вом битовых массивов и значков, доступ к которым осущ. по номеру. Требование к изображениям списка заключается в том, что все они должны иметь один размер. Список также может хранить монохромный битовый массив., используемый в качестве маски. Список поддерживает фу-ции рисования, создания и удаления всего списка, доб. и унич. состав. его элементов, их объединения и переноса. В MFC есть класс CImageList, инкапсулирующий возможности списка изображений. Список –это объект Windows, и класс CImageList, представляет удобный интерфейс с этим объектом.

Создание списка.

Осущ. при пом. дан. класса в два этапа. Во-первых следует создать объект класса, а затем вызвать одну из версий фу-ции Create для создания списка-объекта Windows.

BOOL CImageList :: Create ( int cx, int cy, BOOL bMask, int nInitial, int nGrow ) - // создает пустой список, с создаваемыми парам. сx и cy с размерами битовых массивов. При зад. ненулевого знач. парам. nInitial, сразу при соз. списка созд. битовый массив, кот. в даль. будет содержать изображения. Пар. nNGrow задает число, кот. определ. на сколько изображ. следует увеличивать битовый массив при необходимости. Пар. bMask опред. какого типа следует создавать список – содержащий маски или нет.

Изменение содержимого списка

Для добавления, удаления и замены изображений используются фу-ции Add, Remove, Replace соотсет.

Int CImageList:: Add (Cbitmap* pbmImage, CBbitmap* pbmMask ) - // позволяет не только добавлять сразу несколько битовых массивов,кол-во которых опред. заданной при создании шириной изображений списка, но и зад. маску для изображений.

BOOL CImageList :: Remove (int nImage ) - // удал. элемент с индексом nImage из списка изображений

Знаки в отл. от битовых массивов, уже содержат маску, позволяющую производить рисование а прозрачном режиме. Следующая фу-ция создает значек на основе битового массива и маски (если она есть):

HICON CImageList ::ExtractIcon (int nImage) -//возвращает дискриптор созданного значка для изображения по номеру, задавемому пар. nImage.

Для заполнения и сохр. Всех изображений списка реализованны фу-ции:

BOOL CImageList :: Read (Carchve* pArchive)

и

BOOL CImageList :: Write (Carchve* pArchive) -// используют указатели на объекты класса Carchive.

Т.к. объект класса CImageList лишь представляет в программе объект Windows, путем связывания с ним последнего можно обеспечить доступ к ранее созданному друг. средствами списку. К фу-циям данной группы относятся фу-ции Attach и Datach.

Информация о списке.

Для получения ин-ции о параметрах списка следует пользоватся фу-ями GetImageCount, возвращающей кол-во элементов (изибражений) списка, и GetImageInfo, заполняющей структуру IMAGEINFO ин-цией об изображении по его порядковому номеру в списке:

BOOL CImageList :: GetImageInfo (int nImage, IMAGEINFO* pImageInfo )

Рисование изображений.

Для отображения в прозрачном режиме, когда все точки области устройства вывода изображения имеют один и тот же цвет, следует задать цвет фона изображения таким же, что и цвет области. В этом случае существенно ускоряется процесс вывода, т.к. не требуется дополнительное использ. маски. Для этого класс CImageList имеет в своем составе фу-цию:

COLORREF CImageList :: SetBkColor (COLORREF cr) - // возвращает ранее установленный цвет фона. По умолчанию цвет имеет значение CLR_NONE, в этом случае прозрачный режим реализуется с исп. маски.

Для рисования изображений следует использовать фу-цию Draw:

BOOL CImageList :: Draw (CDC* pdc, int nImage, POINT pt, UINT nStyle) - // осущ. вывод на устройство , определяемое указателем (пар. pdc) на объект класса CDC, по координатам, задаваемым параметром pt. Изображение определяется индексом (параметром nImage). Параметр nStyle задает режим вывода изображения и может содержать комбинацию след. значений.

ILD_NORMAL Рисование осущ. на основе цвета фона, заданного вызовом фу-ции SetBkColor, что позволяет реализовать прозрачный режим и при отсутствии маски.

ILD_TRANSPARENT Рисование осущ. с использованием маски вместо цвета фона.

и другие режимы.

Класс СlistCtrl

CObject CCmdTarget CWnd ClistCtrl

Просмотр списка – мощное средство представления упорядоченного списка элементов, каждый из которых может иметь структуру, состоящую из нескольких полей.

Элемент “просмотр списка” может выводить записи 4 разл. способами:

Крупные значки (Large Icons) задается стилем LVS_ICON

Мелкие значки (Small Icons) задается стилем LVS_SmallICON

Список (List) зад. стилем LVS_LIST

Таблица (Report) зад. стилем LVS_REPORT