Класс CImageList
Предоставляет функциональные возможности стандартного элемента управления "список изображений" Windows.
Синтаксис
class CImageList : public CObject
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CImageList::CImageList |
Формирует объект CImageList . |
Открытые методы
Имя | Описание |
---|---|
CImageList::Add |
Добавляет изображение или изображения в список изображений. |
CImageList::Attach |
Присоединяет список изображений к объекту CImageList . |
CImageList::BeginDrag |
Начинает перетаскивание изображения. |
CImageList::Copy |
Копирует изображение в объекте CImageList . |
CImageList::Create |
Инициализирует список изображений и присоединяет его к объекту CImageList . |
CImageList::DeleteImageList |
Удаляет список изображений. |
CImageList::DeleteTempMap |
Вызывается обработчиком CWinApp времени простоя, чтобы удалить любой временный CImageList объект, созданный с помощью FromHandle . |
CImageList::Detach |
Отсоединяет объект списка изображений от CImageList объекта и возвращает дескриптор в список изображений. |
CImageList::DragEnter |
Блокирует обновления во время операции перетаскивания и отображает изображение перетаскивания в указанной позиции. |
CImageList::DragLeave |
Разблокирует окно и скрывает изображение перетаскивания, чтобы окно можно было обновить. |
CImageList::DragMove |
Перемещает изображение, перетаскиваемое во время операции перетаскивания. |
CImageList::DragShowNolock |
Отображает или скрывает изображение перетаскивания во время операции перетаскивания без блокировки окна. |
CImageList::Draw |
Рисует изображение, перетаскиваемое во время операции перетаскивания. |
CImageList::DrawEx |
Рисует элемент списка изображений в указанном контексте устройства. Функция использует указанный стиль рисования и объединяет изображение с указанным цветом. |
CImageList::DrawIndirect |
Рисует изображение из списка изображений. |
CImageList::EndDrag |
Завершает операцию перетаскивания. |
CImageList::ExtractIcon |
Создает значок на основе изображения и маски в списке изображений. |
CImageList::FromHandle |
Возвращает указатель на CImageList объект при указании дескриптора списку изображений. Если объект CImageList не прикреплен к дескриптору, создается и прикрепляется временный объект CImageList . |
CImageList::FromHandlePermanent |
Возвращает указатель на CImageList объект при указании дескриптора списку изображений. CImageList Если объект не присоединен к дескриптору, возвращается значение NULL. |
CImageList::GetBkColor |
Извлекает текущий цвет фона для списка изображений. |
CImageList::GetDragImage |
Возвращает временный список изображений, используемый для перетаскивания. |
CImageList::GetImageCount |
Извлекает количество изображений в списке изображений. |
CImageList::GetImageInfo |
Извлекает сведения об изображении. |
CImageList::GetSafeHandle |
Извлекает m_hImageList . |
CImageList::Read |
Считывает список изображений из архива. |
CImageList::Remove |
Удаляет изображение из списка изображений. |
CImageList::Replace |
Заменяет изображение в списке изображений новым изображением. |
CImageList::SetBkColor |
Задает цвет фона для списка изображений. |
CImageList::SetDragCursorImage |
Создает новое изображение перетаскивания. |
CImageList::SetImageCount |
Сбрасывает количество изображений в списке изображений. |
CImageList::SetOverlayImage |
Добавляет отсчитываемый от нуля индекс изображения в список изображений, которые будут использоваться в качестве маски наложения. |
CImageList::Write |
Записывает список изображений в архив. |
Открытые операторы
Имя | Описание |
---|---|
CImageList::operator HIMAGELIST |
Возвращает присоединенный HIMAGELIST к объекту CImageList . |
Открытые члены данных
Имя | Описание |
---|---|
CImageList::m_hImageList |
Дескриптор, содержащий список изображений, присоединенный к этому объекту. |
Замечания
"Список изображений" представляет собой коллекцию одинаковых изображений, каждая из которых может ссылаться на его отсчитываемый от нуля индекс. Списки изображений используются для эффективного управления большими наборами значков или растровых изображений. Все изображения в списке изображений содержатся в одном широкоформатном растровом изображении в формате экрана. Список изображений также может содержать монохромное растровое изображение, содержащее маски, используемые для прозрачного рисования изображений (стиль значка). Интерфейс программирования приложений Microsoft Win32 (API) предоставляет функции списка изображений, которые позволяют создавать изображения, создавать и уничтожать списки изображений, добавлять и удалять изображения, заменять изображения, объединять изображения и перетаскивать изображения.
Этот элемент управления (и, следовательно CImageList
, класс) доступен только для программ под управлением Windows 95/98 и Windows NT версии 3.51 и более поздних версий.
Дополнительные сведения об использовании CImageList
см. в разделе "Элементы управления " и "Использование CImageList
".
Иерархия наследования
CImageList
Требования
Заголовок: afxcmn.h
CImageList::Add
Вызовите эту функцию, чтобы добавить один или несколько изображений или значок в список изображений.
int Add(
CBitmap* pbmImage,
CBitmap* pbmMask);
int Add(
CBitmap* pbmImage,
COLORREF crMask);
int Add(HICON hIcon);
Параметры
pbmImage
Указатель на растровое изображение, содержащее изображение или изображения. Количество изображений выводится из ширины растрового изображения.
pbmMask
Указатель на растровое изображение, содержащее маску. Если маска не используется со списком изображений, этот параметр игнорируется.
crMask
Цвет, используемый для создания маски. Каждый пиксель этого цвета в заданном растровом рисунке изменяется на черный, а соответствующий бит в маске имеет один.
hIcon
Дескриптор значка, содержащего растровое изображение и маску для нового изображения.
Возвращаемое значение
Отсчитываемый от нуля индекс первого нового образа в случае успешного выполнения; в противном случае — 1.
Замечания
Вы несете ответственность за освобождение дескриптора значка при завершении работы с ним.
Пример
// Add my icons.
m_myImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_myImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
// Add my bitmap, make all black pixels transparent.
CBitmap bm;
bm.LoadBitmap(IDB_BITMAP1);
m_myImageList.Add(&bm, RGB(0, 0, 0));
CImageList::Attach
Вызовите эту функцию для присоединения списка изображений к объекту CImageList
.
BOOL Attach(HIMAGELIST hImageList);
Параметры
hImageList
Дескриптор объекта списка изображений.
Возвращаемое значение
Ненулевое значение, если вложение выполнено успешно; в противном случае — 0.
Пример
void AddQuestion(HIMAGELIST hmyImageList)
{
CImageList imgList;
// Attach the image list handle to the CImageList object.
imgList.Attach(hmyImageList);
// Add a new icon to the image list.
imgList.Add(AfxGetApp()->LoadStandardIcon(IDI_QUESTION));
// Detach the handle from the CImageList object.
imgList.Detach();
}
CImageList::BeginDrag
Вызовите эту функцию, чтобы начать перетаскивание изображения.
BOOL BeginDrag(
int nImage,
CPoint ptHotSpot);
Параметры
nImage
Отсчитываемый от нуля индекс изображения для перетаскивания.
ptHotSpot
Координаты начальной позиции перетаскивания (как правило, позиция курсора). Координаты относительно левого верхнего угла изображения.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Эта функция создает временный список изображений, используемый для перетаскивания. Изображение объединяет указанное изображение и его маску с текущим курсором. В ответ на последующие WM_MOUSEMOVE
сообщения можно переместить изображение перетаскивания с помощью DragMove
функции-члена. Чтобы завершить операцию перетаскивания, можно использовать EndDrag
функцию-член.
Пример
void CImageListDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// Initialize the drag image (usually called from WM_LBUTTONDOWN).
m_myImageList.BeginDrag(0, CPoint(0, 0));
m_myImageList.DragEnter(this, point);
CDialog::OnLButtonDown(nFlags, point);
}
CImageList::CImageList
Формирует объект CImageList
.
CImageList();
CImageList::Copy
Эта функция-член реализует поведение функции ImageList_Copy
Win32, как описано в пакете SDK для Windows.
BOOL Copy(
int iDst,
int iSrc,
UINT uFlags = ILCF_MOVE);
BOOL Copy(
int iDst,
CImageList* pSrc,
int iSrc,
UINT uFlags = ILCF_MOVE);
Параметры
iDst
Отсчитываемый от нуля индекс изображения, используемый в качестве назначения операции копирования.
iSrc
Отсчитываемый от нуля индекс изображения, используемый в качестве источника операции копирования.
uFlags
Значение битового флага, указывающее тип операции копирования, которую необходимо выполнить. Этот параметр может принимать одно из следующих значений :
Значение | Значение |
---|---|
ILCF_MOVE |
Исходный образ копируется в индекс целевого образа. Эта операция приводит к нескольким экземплярам заданного образа. Значение по умолчанию — ILCF_MOVE . |
ILCF_SWAP |
Исходные и конечные изображения обмениваются позициями в списке изображений. |
pSrc
Указатель на CImageList
объект, который является целью операции копирования.
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Пример
CImageList myImageList2;
myImageList2.Create(32, 32, ILC_COLOR8, 0, 4);
// Copy the first image from myImageList2 and make it
// the first image of m_myImageList.
m_myImageList.Copy(0, &myImageList2, 0, ILCF_MOVE);
// Recopy the image to make it also the last image in m_myImageList.
m_myImageList.Copy(m_myImageList.GetImageCount() - 1, (int)0,
(UINT)ILCF_MOVE);
CImageList::Create
Инициализирует список изображений и присоединяет его к объекту CImageList
.
BOOL Create(
int cx,
int cy,
UINT nFlags,
int nInitial,
int nGrow);
BOOL Create(
UINT nBitmapID,
int cx,
int nGrow,
COLORREF crMask);
BOOL Create(
LPCTSTR lpszBitmapID,
int cx,
int nGrow,
COLORREF crMask);
BOOL Create(
CImageList& imagelist1,
int nImage1,
CImageList& imagelist2,
int nImage2,
int dx,
int dy);
BOOL Create(CImageList* pImageList);
Параметры
cx
Размеры каждого изображения в пикселях.
cy
Размеры каждого изображения в пикселях.
nFlags
Указывает тип создаваемого списка изображений. Этот параметр может быть сочетанием следующих значений, но может содержать только одно из значений ILC_COLOR
.
Значение | Значение |
---|---|
ILC_COLOR |
Используйте поведение по умолчанию, если ни один из других ILC_COLOR* флагов не указан. Как правило, по умолчанию используется ILC_COLOR4 значение по умолчанию, но для старых драйверов отображения используется ILC_COLORDDB значение по умолчанию. |
ILC_COLOR4 |
Используйте раздел 4-разрядной (16 цветов) независимой от устройства растровой карты (DIB) в качестве растрового изображения для списка изображений. |
ILC_COLOR8 |
Используйте 8-разрядный раздел DIB. Цвета, используемые для таблицы цветов, совпадают с цветами, что и палитра полутонов. |
ILC_COLOR16 |
Используйте 16-разрядный (32/64k цвет) diB. |
ILC_COLOR24 |
Используйте 24-разрядный раздел DIB. |
ILC_COLOR32 |
Используйте 32-разрядный раздел DIB. |
ILC_COLORDDB |
Используйте зависимый от устройства растровый рисунок. |
ILC_MASK |
Использует маску. Список изображений содержит два растровых изображения, одно из которых является монохромным растровым изображением, используемым в качестве маски. Если это значение не включено, список изображений содержит только одно растровое изображение. Дополнительные сведения о маскированных изображениях см. в разделе " Рисование изображений из списка изображений". |
nInitial
Количество изображений, которые изначально содержит список изображений.
nGrow
Количество изображений, по которым может расти список изображений, когда системе необходимо изменить размер списка, чтобы освободить место для новых образов. Этот параметр представляет количество новых изображений, которые может содержать список измененных изображений.
nBitmapID
Идентификаторы ресурсов растрового изображения, которые должны быть связаны со списком изображений.
crMask
Цвет, используемый для создания маски. Каждый пиксель этого цвета в указанном растровом рисунке изменяется на черный, а соответствующий бит в маске имеет значение один.
lpszBitmapID
Строка, содержащая идентификаторы ресурсов изображений.
imagelist1
Ссылка на объект CImageList
.
nImage1
Индекс первого существующего образа.
imagelist2
Ссылка на объект CImageList
.
nImage2
Индекс второго существующего образа.
dx
Смещение оси x второго изображения в связи с первым изображением в пикселях.
dy
Смещение оси Y второго изображения в связи с первым изображением в пикселях.
pImageList
Указатель на объект CImageList
.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Вы создаете два CImageList
шага. Сначала вызовите конструктор и вызов Create
, который создает список изображений и присоединяет его к объекту CImageList
.
Пример
m_myImageList.Create(32, 32, ILC_COLOR8, 0, 4);
CImageList::DeleteImageList
Вызовите эту функцию, чтобы удалить список изображений.
BOOL DeleteImageList();
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Пример
// Delete the image list and verify.
myImageList2.DeleteImageList();
ASSERT(myImageList2.GetSafeHandle() == NULL);
CImageList::DeleteTempMap
Вызывается автоматически обработчиком CWinApp
времени простоя, удаляет все временные CImageList
объекты, DeleteTempMap
созданные FromHandle, но не уничтожает дескрипторы (hImageList
) временно связанные с объектамиImageList
.
static void PASCAL DeleteTempMap();
Пример
// Note that this is a static member so an instantiated CImageList
// object is unnecessary.
CImageList::DeleteTempMap();
CImageList::Detach
Вызовите эту функцию, чтобы отключить объект списка изображений от CImageList
объекта.
HIMAGELIST Detach();
Возвращаемое значение
Дескриптор объекта списка изображений.
Замечания
Эта функция возвращает дескриптор объекту списка изображений.
Пример
Пример см. в примере CImageList::Attach
.
CImageList::DragEnter
Во время операции перетаскивания блокирует обновления окна, заданного pWndLock
и отображает изображение перетаскивания в позиции, указанной в point
поле.
static BOOL PASCAL DragEnter(
CWnd* pWndLock,
CPoint point);
Параметры
pWndLock
Указатель на окно, которое владеет изображением перетаскивания.
point
Положение, в котором отображается изображение перетаскивания. Координаты относительно левого верхнего угла окна (а не клиентской области).
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Координаты относятся к левому верхнему углу окна, поэтому при указании координат необходимо компенсировать ширину элементов окна, например границу, строку заголовка и строку меню.
Если pWndLock
это NULL
так, эта функция рисует изображение в контексте отображения, связанном с окном рабочего стола, и координаты относятся к левому верхнему углу экрана.
Эта функция блокирует все остальные обновления заданного окна во время операции перетаскивания. Если во время операции перетаскивания необходимо сделать любой рисунок, например выделение цели операции перетаскивания, можно временно скрыть перетаскиваемое изображение с помощью CImageList::DragLeave
функции.
Пример
Пример см. в примере CImageList::BeginDrag
.
CImageList::DragLeave
Разблокирует окно, указанное pWndLock
и скрывает изображение перетаскивания, что позволяет обновить окно.
static BOOL PASCAL DragLeave(CWnd* pWndLock);
Параметры
pWndLock
Указатель на окно, которое владеет изображением перетаскивания.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Пример
Пример см. в примере CImageList::EndDrag
.
CImageList::DragMove
Вызовите эту функцию для перемещения изображения, перетаскиваемого во время операции перетаскивания.
static BOOL PASCAL DragMove(CPoint pt);
Параметры
pt
Новая позиция перетаскивания.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Обычно эта функция вызывается в ответ на WM_MOUSEMOVE
сообщение. Чтобы начать операцию перетаскивания, используйте функцию-член BeginDrag
.
Пример
void CImageListDlg::OnMouseMove(UINT nFlags, CPoint point)
{
m_myImageList.DragMove(point);
CDialog::OnMouseMove(nFlags, point);
}
CImageList::DragShowNolock
Отображает или скрывает изображение перетаскивания во время операции перетаскивания без блокировки окна.
static BOOL PASCAL DragShowNolock(BOOL bShow);
Параметры
bShow
Указывает, должен ли отображаться изображение перетаскивания.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Функция CImageList::DragEnter
блокирует все обновления окна во время операции перетаскивания. Однако эта функция не блокирует окно.
CImageList::Draw
Вызовите эту функцию, чтобы нарисовать изображение, перетаскиваемое во время операции перетаскивания.
BOOL Draw(
CDC* pDC,
int nImage,
POINT pt,
UINT nStyle);
Параметры
pDC
Указатель на контекст конечного устройства.
nImage
Отсчитываемый от нуля индекс рисунка.
pt
Расположение для рисования в заданном контексте устройства.
nStyle
Флаг, указывающий стиль рисования. Это может быть одно или несколько из следующих значений:
Значение | Значение |
---|---|
ILD_BLEND25 , ILD_FOCUS |
Рисует изображение, смешивая 25 процентов с цветом выделения системы. Это значение не влияет, если список изображений не содержит маску. |
ILD_BLEND50 , , ILD_SELECTED ILD_BLEND |
Рисует изображение, смешивая 50 процентов с цветом выделения системы. Это значение не влияет, если список изображений не содержит маску. |
ILD_MASK |
Рисует маску. |
ILD_NORMAL |
Рисует изображение с помощью цвета фона для списка изображений. Если цвет фона является CLR_NONE значением, изображение рисуется прозрачно с помощью маски. |
ILD_TRANSPARENT |
Рисует изображение прозрачно с помощью маски независимо от цвета фона. |
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Пример
Пример см. в примере CImageList::SetOverlayImage
.
CImageList::DrawEx
Рисует элемент списка изображений в указанном контексте устройства.
BOOL DrawEx(
CDC* pDC,
int nImage,
POINT pt,
SIZE sz,
COLORREF clrBk,
COLORREF clrFg,
UINT nStyle);
Параметры
pDC
Указатель на контекст конечного устройства.
nImage
Отсчитываемый от нуля индекс рисунка.
pt
Расположение для рисования в заданном контексте устройства.
sz
Размер части изображения для рисования относительно левого верхнего угла изображения. См dx
. и dy
в ImageList_DrawEx
пакете SDK для Windows.
clrBk
Цвет фона изображения. См rgbBk
. в ImageList_DrawEx
пакете SDK для Windows.
clrFg
Цвет переднего плана изображения. См rgbFg
. в ImageList_DrawEx
пакете SDK для Windows.
nStyle
Флаг, указывающий стиль рисования. См fStyle
. в ImageList_DrawEx
пакете SDK для Windows.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Функция использует указанный стиль рисования и объединяет изображение с указанным цветом.
Пример
m_myImageList.DrawEx(&dc, 0, CPoint(0, 0), CSize(16, 16), CLR_DEFAULT,
CLR_DEFAULT, ILD_IMAGE);
CImageList::DrawIndirect
Вызовите эту функцию-член, чтобы нарисовать изображение из списка изображений.
BOOL DrawIndirect(IMAGELISTDRAWPARAMS* pimldp);
BOOL DrawIndirect(
CDC* pDC,
int nImage,
POINT pt,
SIZE sz,
POINT ptOrigin,
UINT fStyle = ILD_NORMAL,
DWORD dwRop = SRCCOPY,
COLORREF rgbBack = CLR_DEFAULT,
COLORREF rgbFore = CLR_DEFAULT,
DWORD fState = ILS_NORMAL,
DWORD Frame = 0,
COLORREF crEffect = CLR_DEFAULT);
Параметры
pimldp
Указатель на IMAGELISTDRAWPARAMS
структуру, содержащую сведения об операции рисования.
pDC
Указатель на контекст целевого устройства. Этот объект необходимо удалить CDC
при завершении работы.
nImage
Отсчитываемый от нуля индекс изображения.
pt
Структура POINT
, содержащая координаты X и Y, где будет вырисовано изображение.
sz
Структура SIZE
, указывающая размер нарисованного изображения.
ptOrigin
Структура POINT
, содержащая координаты X и Y, указывающая верхний левый угол операции рисования относительно самого изображения. Пиксели изображения, которые находятся слева от координат x и выше координаты y, не рисуются.
fStyle
Флаг, указывающий стиль рисования и, при необходимости, изображение наложения. Дополнительные сведения о изображении наложения см. в разделе "Примечания". Реализация по умолчанию ILD_NORMAL
MFC рисует изображение с помощью цвета фона для списка изображений. Если цвет фона является CLR_NONE
значением, изображение рисуется прозрачно с помощью маски.
Другие возможные стили описаны в fStyle
элементе IMAGELISTDRAWPARAMS
структуры.
dwRop
Значение, указывающее код растровой операции. Эти коды определяют, как данные цвета для исходного прямоугольника будут объединены с цветными данными для целевого прямоугольника для достижения окончательного цвета. Реализация SRCCOPY
по умолчанию MFC копирует исходный прямоугольник непосредственно в прямоугольник назначения. Этот параметр игнорируется, если fStyle
параметр не включает ILD_ROP
флаг.
Другие возможные значения описаны в dwRop
элементе IMAGELISTDRAWPARAMS
структуры.
rgbBack
Цвет фона изображения по умолчанию CLR_DEFAULT
. Этот параметр может быть определяемым приложением значением RGB или одним из следующих значений:
Значение | Значение |
---|---|
CLR_DEFAULT |
Цвет фона по умолчанию. Изображение рисуется с помощью цвета фона списка изображений. |
CLR_NONE |
Нет цвета фона. Изображение рисуется прозрачно. |
rgbFore
Цвет переднего плана изображения по умолчанию CLR_DEFAULT
. Этот параметр может быть определяемым приложением значением RGB или одним из следующих значений:
Значение | Значение |
---|---|
CLR_DEFAULT |
Цвет переднего плана по умолчанию. Изображение рисуется с помощью цвета выделения системы в качестве цвета переднего плана. |
CLR_NONE |
Нет цвета смешения. Изображение смешивается с цветом контекста целевого устройства. |
Этот параметр используется только в том случае, если fStyle
он включает ILD_BLEND25
или ILD_BLEND50
флаг.
fState
Флаг, указывающий состояние рисования. Этот элемент может содержать один или несколько флагов состояния списка изображений.
Frame
Влияет на поведение насыщенных и альфа-смешивающих эффектов.
При использовании с ILS_SATURATE
этим элементом содержится значение, добавляемое к каждому компоненту цвета RGB-триплета для каждого пикселя в значке.
При использовании с ILS_APLHA
этим элементом содержится значение альфа-канала. Это значение может быть от 0 до 255, с 0 полностью прозрачным и 255 полностью непрозрачным.
crEffect
Значение, используемое COLORREF
для эффектов свечения и тени.
Возвращаемое значение
TRUE
Значение , если изображение успешно нарисовано; в противном случае FALSE
.
Замечания
Используйте первую версию, если вы хотите заполнить структуру Win32 самостоятельно. Используйте вторую версию, если вы хотите воспользоваться одним или несколькими аргументами по умолчанию MFC или не управлять структурой.
Изображение наложения — это изображение, нарисованное поверх основного изображения, указанного в этой функции-члене параметром nImage
. Нарисуйте маску наложения с помощью Draw
функции-члена с одним индексом маски наложения, указанной INDEXTOOVERLAYMASK
с помощью макроса.
Пример
int i, dx, cx, cy, nCount = m_myImageList.GetImageCount();
::ImageList_GetIconSize(m_myImageList, &cx, &cy);
// Draw the images of the image list on the DC.
for (dx = 0, i = 0; i < nCount; i++)
{
m_myImageList.DrawIndirect(&dc, i, CPoint(dx, 0),
CSize(cx, cy), CPoint(0, 0));
dx += cx;
}
CImageList::EndDrag
Вызовите эту функцию, чтобы завершить операцию перетаскивания.
static void PASCAL EndDrag();
Замечания
Чтобы начать операцию перетаскивания, используйте функцию-член BeginDrag
.
Пример
void CImageListDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// Terminate the drag image (usually called from WM_LBUTTONUP).
m_myImageList.DragLeave(this);
m_myImageList.EndDrag();
CDialog::OnLButtonUp(nFlags, point);
}
CImageList::ExtractIcon
Вызовите эту функцию, чтобы создать значок на основе изображения и связанной маски в списке изображений.
HICON ExtractIcon(int nImage);
Параметры
nImage
Отсчитываемый от нуля индекс изображения.
Возвращаемое значение
Дескриптор значка в случае успешного выполнения; в противном случае NULL
.
Замечания
Этот метод зависит от поведения ImageList_ExtractIcon
макроса для создания значка. Дополнительные сведения о создании и очистке значков см. в ImageList_ExtractIcon
макросе.
Пример
int i, dx, cx, cy, nCount = m_myImageList.GetImageCount();
HICON hIcon;
::ImageList_GetIconSize(m_myImageList, &cx, &cy);
// Draw the images of the image list on the DC.
for (dx = 0, i = 0; i < nCount; i++)
{
hIcon = m_myImageList.ExtractIcon(i);
dc.DrawIcon(dx, 0, hIcon);
dx += cx;
}
CImageList::FromHandle
Возвращает указатель на CImageList
объект при указании дескриптора списку изображений.
static CImageList* PASCAL FromHandle(HIMAGELIST hImageList);
Параметры
hImageList
Указывает список изображений.
Возвращаемое значение
Указатель на объект в случае успешного CImageList
выполнения; в противном случае NULL
.
Замечания
Если к дескриптору CImageList
еще не подключено, создается и присоединен временный CImageList
объект. Этот временный объект действителен только после следующего времени, когда приложение имеет время простоя CImageList
в цикле событий, в течение которого удаляются все временные объекты.
Пример
CImageList *ConvertHandle(HIMAGELIST hmyImageList)
{
// Convert the HIMAGELIST to a CImageList*.
ASSERT(hmyImageList != NULL);
CImageList *pmyImageList = CImageList::FromHandle(hmyImageList);
ASSERT(pmyImageList != NULL);
return pmyImageList;
}
CImageList::FromHandlePermanent
Возвращает указатель на CImageList
объект при указании дескриптора списку изображений.
static CImageList* PASCAL FromHandlePermanent(HIMAGELIST hImageList);
Параметры
hImageList
Указывает список изображений.
Возвращаемое значение
Указатель на объект в случае успешного CImageList
выполнения; в противном случае NULL
.
Замечания
CImageList
Если объект не присоединен к дескриптору, NULL
возвращается.
Пример
CImageList *ConvertHandlePermanent(HIMAGELIST hmyImageList)
{
// Convert the HIMAGELIST to a CImageList*.
ASSERT(hmyImageList != NULL);
CImageList *pmyImageList = CImageList::FromHandlePermanent(hmyImageList);
ASSERT(pmyImageList != NULL);
return pmyImageList;
}
CImageList::GetBkColor
Вызовите эту функцию, чтобы получить текущий цвет фона для списка изображений.
COLORREF GetBkColor() const;
Возвращаемое значение
Значение цвета RGB для цвета фона CImageList
объекта.
Пример
Пример см. в примере CImageList::SetBkColor
.
CImageList::GetDragImage
Возвращает временный список изображений, используемый для перетаскивания.
static CImageList* PASCAL GetDragImage(
LPPOINT lpPoint,
LPPOINT lpPointHotSpot);
Параметры
lpPoint
POINT
Адрес структуры, получающей текущую позицию перетаскивания.
lpPointHotSpot
POINT
Адрес структуры, получающей смещение изображения перетаскивания относительно позиции перетаскивания.
Возвращаемое значение
При успешном выполнении указатель на временный список изображений, используемый для перетаскивания; NULL
в противном случае .
CImageList::GetImageCount
Вызовите эту функцию, чтобы получить количество изображений в списке изображений.
int GetImageCount() const;
Возвращаемое значение
Количество изображений.
Пример
Пример см. в примере CImageList::ExtractIcon
.
CImageList::GetImageInfo
Вызовите эту функцию, чтобы получить сведения о изображении.
BOOL GetImageInfo(
int nImage,
IMAGEINFO* pImageInfo) const;
Параметры
nImage
Отсчитываемый от нуля индекс изображения.
pImageInfo
Указатель на структуру IMAGEINFO
, которая получает сведения о изображении. Сведения в этой структуре можно использовать для непосредственного управления растровыми изображениями для изображения.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Структура IMAGEINFO
содержит сведения об изображении в списке изображений.
CImageList::GetSafeHandle
Вызовите эту функцию, чтобы получить m_hImageList
член данных.
HIMAGELIST GetSafeHandle() const;
Возвращаемое значение
Дескриптор в присоединенном списке изображений; в противном случае NULL
, если объект не подключен.
Пример
// Get the safe handle to the image list.
HIMAGELIST hImageList = m_myImageList.GetSafeHandle();
CImageList::m_hImageList
Дескриптор списка изображений, присоединенного к этому объекту.
HIMAGELIST m_hImageList;
Замечания
Элемент m_hImageList
данных — это общедоступная переменная типа HIMAGELIST
.
Пример
// Get the safe handle to the image list.
HIMAGELIST hImageList = m_myImageList.m_hImageList;
CImageList::operator HIMAGELIST
Используйте этот оператор, чтобы получить присоединенный дескриптор CImageList
объекта.
operator HIMAGELIST() const;
Возвращаемое значение
В случае успешного выполнения дескриптор списка изображений, представленный CImageList
объектом; в противном случае NULL
.
Замечания
Этот оператор является оператором приведения, который поддерживает прямое использование HIMAGELIST
объекта.
Пример
// Get the safe handle to the image list.
HIMAGELIST hImageList = m_myImageList;
CImageList::Read
Вызовите эту функцию для чтения списка изображений из архива.
BOOL Read(CArchive* pArchive);
Параметры
pArchive
Указатель на CArchive
объект, из которого должен быть считывается список изображений.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Пример
// Open the archive to load the image list from.
CFile myFile(_T("myfile.data"), CFile::modeRead);
CArchive ar(&myFile, CArchive::load);
CImageList myImgList;
// Load the image list from the archive.
myImgList.Read(&ar);
CImageList::Remove
Вызовите эту функцию, чтобы удалить изображение из объекта списка изображений.
BOOL Remove(int nImage);
Параметры
nImage
Отсчитываемый от нуля индекс образа.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Все следующие элементы nImage
теперь перемещаются вниз по одной позиции. Например, если список изображений содержит два элемента, удаление первого элемента приведет к тому, что оставшийся элемент будет находиться в первой позиции. nImage
=0 для элемента в первой позиции.
Пример
// Remove every other image from the image list.
for (int i = 0; i < m_myImageList.GetImageCount(); i++)
{
m_myImageList.Remove(i);
}
CImageList::Replace
Вызовите эту функцию, чтобы заменить изображение в списке изображений новым изображением.
BOOL Replace(
int nImage,
CBitmap* pbmImage,
CBitmap* pbmMask);
int Replace(
int nImage,
HICON hIcon);
Параметры
nImage
Отсчитываемый от нуля индекс изображения для замены.
pbmImage
Указатель на растровое изображение, содержащее изображение.
pbmMask
Указатель на растровое изображение, содержащее маску. Если маска не используется со списком изображений, этот параметр игнорируется.
hIcon
Дескриптор значка, содержащего растровое изображение и маску для нового изображения.
Возвращаемое значение
Возвращаемая BOOL
версия возвращает ненулевое значение; в противном случае — значение 0.
Возвращаемая int
версия возвращает отсчитываемый от нуля индекс изображения в случае успешного выполнения; в противном случае — 1.
Замечания
Вызовите эту функцию-член после вызова SetImageCount
, чтобы назначить новые допустимые изображения номерам индекса заполнителя.
Пример
Пример см. в примере CImageList::SetImageCount
.
CImageList::SetBkColor
Вызовите эту функцию, чтобы задать цвет фона для списка изображений.
COLORREF SetBkColor(COLORREF cr);
Параметры
cr
Цвет фона для задания. Это может быть CLR_NONE
. В этом случае изображения рисуются прозрачно с помощью маски.
Возвращаемое значение
Предыдущий цвет фона при успешном выполнении; в противном случае CLR_NONE
.
Пример
// Set the background color to white.
m_myImageList.SetBkColor(RGB(255, 255, 255));
ASSERT(m_myImageList.GetBkColor() == RGB(255, 255, 255));
CImageList::SetDragCursorImage
Создает новое изображение перетаскивания путем объединения заданного изображения (обычно изображения курсора мыши) с текущим изображением перетаскивания.
BOOL SetDragCursorImage(
int nDrag,
CPoint ptHotSpot);
Параметры
nDrag
Индекс нового изображения для объединения с изображением перетаскивания.
ptHotSpot
Положение горячей точки в новом изображении.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Так как функции перетаскивания используют новое изображение во время операции перетаскивания, следует использовать функцию Windows ShowCursor
для скрытия фактического курсора мыши после вызова CImageList::SetDragCursorImage
. В противном случае система может иметь два курсора мыши в течение длительности операции перетаскивания.
CImageList::SetImageCount
Вызовите эту функцию-член, чтобы сбросить количество изображений в объекте CImageList
.
BOOL SetImageCount(UINT uNewCount);
Параметры
uNewCount
Значение, указывающее новое общее количество изображений в списке изображений.
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Замечания
Если вызвать эту функцию-член, чтобы увеличить количество изображений в списке изображений, вызовите Replace
каждый дополнительный образ, чтобы назначить новые индексы допустимым изображениям. Если не удается назначить индексы допустимым изображениям, операции рисования, создающие новые изображения, будут непредсказуемыми.
Если уменьшить размер списка изображений с помощью этой функции, то усеченные изображения освобождаются.
Пример
// Set the image count of the image list to be 10 with
// all images being the system question mark icon.
m_myImageList.SetImageCount(10);
HICON hIcon = AfxGetApp()->LoadStandardIcon(IDI_QUESTION);
for (int i = 0; i < 10; i++)
{
m_myImageList.Replace(i, hIcon);
}
CImageList::SetOverlayImage
Вызовите эту функцию, чтобы добавить отсчитываемый от нуля индекс изображения в список изображений, которые будут использоваться в качестве маски наложения.
BOOL SetOverlayImage(
int nImage,
int nOverlay);
Параметры
nImage
Отсчитываемый от нуля индекс изображения, используемый в качестве маски наложения.
nOverlay
Одноуровневый индекс маски наложения.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
В список можно добавить до четырех индексов.
Маска наложения — это изображение, нарисованное прозрачно по другому изображению. Нарисуйте маску наложения на изображение с помощью CImageList::Draw
функции-члена с одним индексом маски наложения, указанной с помощью INDEXTOOVERLAYMASK
макроса.
Пример
// Add a new image to the image list.
int nIndex = m_myImageList.Add(AfxGetApp()->LoadStandardIcon(IDI_QUESTION));
if (nIndex != -1)
{
// Make the new image an overlay image.
m_myImageList.SetOverlayImage(nIndex, 1);
// Draw the first image in the image list with an overlay image.
m_myImageList.Draw(&dc, 0, CPoint(0, 0), INDEXTOOVERLAYMASK(1));
}
CImageList::Write
Вызовите эту функцию для записи объекта списка изображений в архив.
BOOL Write(CArchive* pArchive);
Параметры
pArchive
Указатель на CArchive
объект, в котором должен храниться список изображений.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Пример
// Open the archive to store the image list in.
CFile myFile(_T("myfile.data"), CFile::modeCreate | CFile::modeWrite);
CArchive ar(&myFile, CArchive::store);
// Store the image list in the archive.
m_myImageList.Write(&ar);
См. также
CObject
Класс
Диаграмма иерархии
CListCtrl
Класс
CTabCtrl
Класс