Freigeben über


CImageList-Klasse

Stellt die Funktionalität des allgemeinen Windows-Bildlisten-Steuerelements bereit.

Syntax

class CImageList : public CObject

Member

Öffentliche Konstruktoren

Name Beschreibung
CImageList::CImageList Erstellt ein CImageList-Objekt.

Öffentliche Methoden

Name Beschreibung
CImageList::Add Fügt einer Bildliste ein Bild oder Bilder hinzu.
CImageList::Attach Fügt eine Bildliste an ein CImageList Objekt an.
CImageList::BeginDrag Beginnt mit dem Ziehen eines Bilds.
CImageList::Copy Kopiert ein Bild innerhalb eines CImageList Objekts.
CImageList::Create Initialisiert eine Bildliste und fügt sie an ein CImageList Objekt an.
CImageList::DeleteImageList Löscht eine Bildliste.
CImageList::DeleteTempMap Wird vom CWinApp Leerlaufzeithandler aufgerufen, um alle temporären CImageList Objekte zu löschen, die von FromHandle.
CImageList::Detach Trennt ein Bildlistenobjekt von einem CImageList Objekt und gibt ein Handle an eine Bildliste zurück.
CImageList::DragEnter Sperrt Aktualisierungen während eines Ziehvorgangs und zeigt das Ziehbild an einer angegebenen Position an.
CImageList::DragLeave Entsperrt das Fenster und blendet das Ziehbild aus, sodass das Fenster aktualisiert werden kann.
CImageList::DragMove Verschiebt das Bild, das bei einem Drag & Drop-Vorgang gezogen wird.
CImageList::DragShowNolock Blendet das Ziehbild während eines Ziehvorgangs ein oder aus, ohne das Fenster zu sperren.
CImageList::Draw Zeichnet das Bild, das während eines Drag-and-Drop-Vorgangs gezogen wird.
CImageList::DrawEx Zeichnet ein Bildlistenelement im angegebenen Gerätekontext. Die Funktion verwendet den angegebenen Zeichenstil und blendet das Bild mit der angegebenen Farbe zusammen.
CImageList::DrawIndirect Zeichnet ein Bild aus einer Bildliste.
CImageList::EndDrag Beendet einen Ziehvorgang.
CImageList::ExtractIcon Erstellt ein Symbol basierend auf einem Bild und einer Maske in einer Bildliste.
CImageList::FromHandle Gibt einen Zeiger auf ein CImageList Objekt zurück, wenn ein Handle für eine Bildliste angegeben wird. Wenn ein CImageList-Objekt nicht an das Handle angefügt ist, wird ein temporäres CImageList-Objekt erstellt und angefügt.
CImageList::FromHandlePermanent Gibt einen Zeiger auf ein CImageList Objekt zurück, wenn ein Handle für eine Bildliste angegeben wird. Wenn ein CImageList Objekt nicht an das Handle angefügt ist, wird NULL zurückgegeben.
CImageList::GetBkColor Ruft die aktuelle Hintergrundfarbe für eine Bildliste ab.
CImageList::GetDragImage Ruft die temporäre Bildliste ab, die zum Ziehen verwendet wird.
CImageList::GetImageCount Ruft die Anzahl der Bilder in einer Bildliste ab.
CImageList::GetImageInfo Ruft Informationen zu einem Image ab
CImageList::GetSafeHandle m_hImageListRuft ab.
CImageList::Read Liest eine Bildliste aus einem Archiv.
CImageList::Remove Entfernt ein Bild aus einer Bildliste.
CImageList::Replace Ersetzt ein Bild in einer Bildliste durch ein neues Bild.
CImageList::SetBkColor Legt die Hintergrundfarbe für eine Bildliste fest.
CImageList::SetDragCursorImage Erstellt ein neues Ziehbild.
CImageList::SetImageCount Setzt die Anzahl der Bilder in einer Bildliste zurück.
CImageList::SetOverlayImage Fügt den nullbasierten Index eines Bilds zur Liste der Bilder hinzu, die als Überlagerungsmasken verwendet werden sollen.
CImageList::Write Schreibt eine Bildliste in ein Archiv.

Öffentliche Operatoren

Name Beschreibung
CImageList::operator HIMAGELIST Gibt den HIMAGELIST angefügten Wert zurück CImageList.

Öffentliche Datenmember

Name Beschreibung
CImageList::m_hImageList Ein Handle, das die an dieses Objekt angefügte Bildliste enthält.

Hinweise

Eine "Bildliste" ist eine Sammlung von Bildern gleicher Größe, auf die jeder durch seinen nullbasierten Index verwiesen werden kann. Bildlisten werden verwendet, um große Gruppen von Symbolen oder Bitmaps effizient zu verwalten. Alle Bilder in einer Bildliste sind in einer einzelnen, breiten Bitmap im Bildschirmgeräteformat enthalten. Eine Bildliste kann auch eine monochrome Bitmap enthalten, die Masken enthält, die zum transparenten Zeichnen von Bildern (Symbolformat) verwendet werden. Die Microsoft Win32-Anwendungsprogrammierschnittstelle (API) bietet Bildlistenfunktionen, mit denen Sie Bilder zeichnen, Bilder erstellen und zerstören, Bilder hinzufügen und entfernen, Bilder ersetzen, Bilder zusammenführen und ziehen können.

Dieses Steuerelement (und daher die Klasse) ist nur für Programme verfügbar, die CImageList unter Windows 95/98 und Windows NT, Version 3.51 und höher ausgeführt werden.

Weitere Informationen zur Verwendung CImageListfinden Sie unter "Steuerelemente und Verwenden" CImageList.

Vererbungshierarchie

CObject

CImageList

Anforderungen

Header: afxcmn.h

CImageList::Add

Rufen Sie diese Funktion auf, um einer Bildliste mindestens ein Bild oder ein Symbol hinzuzufügen.

int Add(
    CBitmap* pbmImage,
    CBitmap* pbmMask);

int Add(
    CBitmap* pbmImage,
    COLORREF crMask);

int Add(HICON hIcon);

Parameter

pbmImage
Zeigen Sie auf die Bitmap, die das Bild oder die Bilder enthält. Die Anzahl der Bilder wird von der Breite der Bitmap abgeleitet.

pbmMask
Zeigen Sie auf die Bitmap, die die Maske enthält. Wenn keine Maske mit der Bildliste verwendet wird, wird dieser Parameter ignoriert.

crMask
Farbe, die zum Generieren der Maske verwendet wird. Jedes Pixel dieser Farbe in der angegebenen Bitmap wird in Schwarz geändert, und das entsprechende Bit in der Maske wird auf eins festgelegt.

hIcon
Handle des Symbols, das die Bitmap und die Maske für das neue Bild enthält.

Rückgabewert

Nullbasierter Index des ersten neuen Bilds bei erfolgreicher Ausführung; andernfalls - 1.

Hinweise

Sie sind dafür verantwortlich, den Symbolziehpunkt freizugeben, wenn Sie damit fertig sind.

Beispiel

// 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

Rufen Sie diese Funktion auf, um eine Bildliste an ein CImageList Objekt anzufügen.

BOOL Attach(HIMAGELIST hImageList);

Parameter

hImageList
Ein Handle zu einem Bildlistenobjekt.

Rückgabewert

Nonzero, wenn die Anlage erfolgreich war; andernfalls 0.

Beispiel

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

Rufen Sie diese Funktion auf, um mit dem Ziehen eines Bilds zu beginnen.

BOOL BeginDrag(
    int nImage,
    CPoint ptHotSpot);

Parameter

nImage
Nullbasierter Index des zu ziehenden Bilds.

ptHotSpot
Koordinaten der Anfangsziehposition (in der Regel die Cursorposition). Die Koordinaten sind relativ zur oberen linken Ecke des Bilds.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Diese Funktion erstellt eine temporäre Bildliste, die zum Ziehen verwendet wird. Das Bild kombiniert das angegebene Bild und seine Maske mit dem aktuellen Cursor. Als Reaktion auf nachfolgende WM_MOUSEMOVE Nachrichten können Sie das Ziehbild mithilfe der DragMove Memberfunktion verschieben. Zum Beenden des Ziehvorgangs können Sie die EndDrag Memberfunktion verwenden.

Beispiel

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

Erstellt ein CImageList-Objekt.

CImageList();

CImageList::Copy

Diese Memberfunktion implementiert das Verhalten der Win32-Funktion ImageList_Copy, wie im Windows SDK beschrieben.

BOOL Copy(
    int iDst,
    int iSrc,
    UINT uFlags = ILCF_MOVE);

BOOL Copy(
    int iDst,
    CImageList* pSrc,
    int iSrc,
    UINT uFlags = ILCF_MOVE);

Parameter

iDst
Der nullbasierte Index des Bilds, das als Ziel des Kopiervorgangs verwendet werden soll.

iSrc
Der nullbasierte Index des Bilds, das als Quelle des Kopiervorgangs verwendet werden soll.

uFlags
Der Bitkennzeichnungswert, der den Typ des zu erstellenden Kopiervorgangs angibt. Dieser Parameter kann einen der folgenden -Werte aufweisen:

Wert Bedeutung
ILCF_MOVE Das Quellbild wird in den Index des Zielbilds kopiert. Dieser Vorgang führt zu mehreren Instanzen eines bestimmten Bilds. ILCF_MOVE ist die Standardoption.
ILCF_SWAP Die Quell- und Zielbilder tauschen Positionen innerhalb der Bildliste aus.

pSrc
Ein Zeiger auf ein CImageList Objekt, das das Ziel des Kopiervorgangs ist.

Rückgabewert

Ungleich 0, wenn erfolgreich, andernfalls 0.

Beispiel

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

Initialisiert eine Bildliste und fügt sie an ein CImageList Objekt an.

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);

Parameter

cx
Abmessungen der einzelnen Bilder in Pixeln.

cy
Abmessungen der einzelnen Bilder in Pixeln.

nFlags
Gibt den Typ der zu erstellenden Bildliste an. Dieser Parameter kann eine Kombination aus den folgenden Werten sein, kann jedoch nur einen der ILC_COLOR Werte enthalten.

Wert Bedeutung
ILC_COLOR Verwenden Sie das Standardverhalten, wenn keines der anderen ILC_COLOR* Flags angegeben ist. In der Regel lautet ILC_COLOR4der Standardwert ; bei älteren Anzeigetreibern ist ILC_COLORDDBdie Standardeinstellung jedoch .
ILC_COLOR4 Verwenden Sie einen 4-Bit-Abschnitt (16 Farben) geräteunabhängige Bitmap (DIB) als Bitmap für die Bildliste.
ILC_COLOR8 Verwenden Sie einen 8-Bit-DIB-Abschnitt. Die Farben, die für die Farbtabelle verwendet werden, sind die gleichen Farben wie die Halbtonpalette.
ILC_COLOR16 Verwenden Sie einen 16-Bit-DIB-Abschnitt (32/64k Farbe).
ILC_COLOR24 Verwenden Sie einen 24-Bit-DIB-Abschnitt.
ILC_COLOR32 Verwenden Sie einen 32-Bit-DIB-Abschnitt.
ILC_COLORDDB Verwenden Sie eine geräteabhängige Bitmap.
ILC_MASK Verwendet eine Maske. Die Bildliste enthält zwei Bitmaps, von denen eine monochrome Bitmap ist, die als Maske verwendet wird. Wenn dieser Wert nicht enthalten ist, enthält die Bildliste nur eine Bitmap. Weitere Informationen zu maskierten Bildern finden Sie unter Zeichnen von Bildern aus einer Bildliste .

nInitial
Die Anzahl der Bilder, die die Bildliste anfänglich enthält.

nGrow
Anzahl der Bilder, um die die Bildliste vergrößert werden kann, wenn das System die Größe der Liste ändern muss, um Platz für neue Bilder zu schaffen. Dieser Parameter stellt die Anzahl der neuen Bilder dar, die die Bildliste mit geänderter Größe enthalten kann.

nBitmapID
Ressourcen-IDs der Bitmap, die der Bildliste zugeordnet werden sollen.

crMask
Farbe, die zum Generieren einer Maske verwendet wird. Jedes Pixel dieser Farbe in der angegebenen Bitmap wird in Schwarz geändert, und das entsprechende Bit in der Maske wird auf eins festgelegt.

lpszBitmapID
Eine Zeichenfolge, die die Ressourcen-IDs der Bilder enthält.

imagelist1
Ein Verweis auf ein CImageList-Objekt.

nImage1
Index des ersten vorhandenen Bilds.

imagelist2
Ein Verweis auf ein CImageList-Objekt.

nImage2
Index des zweiten vorhandenen Bilds.

dx
Offset der x-Achse des zweiten Bilds in Beziehung zum ersten Bild in Pixel.

dy
Offset der y-Achse des zweiten Bilds in Beziehung zum ersten Bild in Pixel.

pImageList
Ein Zeiger auf ein CImageList-Objekt.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Sie erstellen eine CImageList in zwei Schritten. Rufen Sie zuerst den Konstruktor auf, und rufen Sie dann auf Create, wodurch die Bildliste erstellt und an das CImageList Objekt angefügt wird.

Beispiel

m_myImageList.Create(32, 32, ILC_COLOR8, 0, 4);

CImageList::DeleteImageList

Rufen Sie diese Funktion auf, um eine Bildliste zu löschen.

BOOL DeleteImageList();

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Beispiel

// Delete the image list and verify.
myImageList2.DeleteImageList();
ASSERT(myImageList2.GetSafeHandle() == NULL);

CImageList::DeleteTempMap

Wird automatisch vom CWinApp Leerlaufzeithandler aufgerufen, werden alle temporären CImageList Objekte, die von FromHandle erstellt wurden, DeleteTempMap gelöscht, jedoch werden keine Handles ( hImageList) vorübergehend den ImageList Objekten zugeordnet.

static void PASCAL DeleteTempMap();

Beispiel

// Note that this is a static member so an instantiated CImageList
// object is unnecessary.
CImageList::DeleteTempMap();

CImageList::Detach

Rufen Sie diese Funktion auf, um ein Bildlistenobjekt von einem CImageList Objekt zu trennen.

HIMAGELIST Detach();

Rückgabewert

Ein Handle zu einem Bildlistenobjekt.

Hinweise

Diese Funktion gibt ein Handle für das Bildlistenobjekt zurück.

Beispiel

Ein Beispiel hierfür finden Sie unter CImageList::Attach.

CImageList::DragEnter

Sperrt während eines Ziehvorgangs Updates für das durch pWndLock das angegebene Fenster und zeigt das Ziehbild an der durch point.

static BOOL PASCAL DragEnter(
    CWnd* pWndLock,
    CPoint point);

Parameter

pWndLock
Zeigen Sie auf das Fenster, das das Ziehbild besitzt.

point
Position, an der das Ziehbild angezeigt werden soll. Koordinaten sind relativ zur oberen linken Ecke des Fensters (nicht der Clientbereich).

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Die Koordinaten sind relativ zur oberen linken Ecke des Fensters, sodass Sie beim Angeben der Koordinaten die Breite von Fensterelementen wie Rahmen, Titelleiste und Menüleiste ausgleichen müssen.

Wenn pWndLock dies der Fall ist NULL, zeichnet diese Funktion das Bild im Dem Desktopfenster zugeordneten Anzeigekontext, und Koordinaten sind relativ zur oberen linken Ecke des Bildschirms.

Diese Funktion sperrt alle anderen Aktualisierungen des angegebenen Fensters während des Ziehvorgangs. Wenn Sie während eines Ziehvorgangs eine Zeichnung ausführen müssen, z. B. das Hervorheben des Ziels eines Drag-and-Drop-Vorgangs, können Sie das gezogene Bild vorübergehend mithilfe der CImageList::DragLeave Funktion ausblenden.

Beispiel

Ein Beispiel hierfür finden Sie unter CImageList::BeginDrag.

CImageList::DragLeave

Entsperrt das durch pWndLock das Ziehbild angegebene Fenster und blendet es aus, sodass das Fenster aktualisiert werden kann.

static BOOL PASCAL DragLeave(CWnd* pWndLock);

Parameter

pWndLock
Zeigen Sie auf das Fenster, das das Ziehbild besitzt.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Beispiel

Ein Beispiel hierfür finden Sie unter CImageList::EndDrag.

CImageList::DragMove

Rufen Sie diese Funktion auf, um das Bild zu verschieben, das während eines Drag-and-Drop-Vorgangs gezogen wird.

static BOOL PASCAL DragMove(CPoint pt);

Parameter

pt
Neue Ziehposition.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Diese Funktion wird in der Regel als Reaktion auf eine WM_MOUSEMOVE Nachricht aufgerufen. Verwenden Sie die BeginDrag Memberfunktion, um einen Ziehvorgang zu starten.

Beispiel

void CImageListDlg::OnMouseMove(UINT nFlags, CPoint point)
{
   m_myImageList.DragMove(point);

   CDialog::OnMouseMove(nFlags, point);
}

CImageList::DragShowNolock

Blendet das Ziehbild während eines Ziehvorgangs ein oder aus, ohne das Fenster zu sperren.

static BOOL PASCAL DragShowNolock(BOOL bShow);

Parameter

bShow
Gibt an, ob das Ziehbild angezeigt werden soll.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Die CImageList::DragEnter Funktion sperrt alle Aktualisierungen des Fensters während eines Ziehvorgangs. Diese Funktion sperrt das Fenster jedoch nicht.

CImageList::Draw

Rufen Sie diese Funktion auf, um das Bild zu zeichnen, das während eines Drag-and-Drop-Vorgangs gezogen wird.

BOOL Draw(
    CDC* pDC,
    int nImage,
    POINT pt,
    UINT nStyle);

Parameter

pDC
Zeiger auf den Zielgerätekontext.

nImage
Nullbasierter Index des zu zeichnenden Bilds.

pt
Position, an der innerhalb des angegebenen Gerätekontexts gezeichnet werden soll.

nStyle
Kennzeichen, das das Zeichenformat angibt. Dabei kann es sich um einen oder mehrere dieser Werte handeln:

Wert Bedeutung
ILD_BLEND25, ILD_FOCUS Zeichnet das Bild, wobei 25 Prozent mit der Farbe für die Systemmarkierung gemischt wird. Dieser Wert hat keine Auswirkung, wenn die Bildliste keine Maske enthält.
ILD_BLEND50, ILD_SELECTEDILD_BLEND Zeichnet das Bild, wobei 50 Prozent mit der Systemmarkierungsfarbe kombiniert werden. Dieser Wert hat keine Auswirkung, wenn die Bildliste keine Maske enthält.
ILD_MASK Zeichnet die Maske.
ILD_NORMAL Zeichnet das Bild mithilfe der Hintergrundfarbe für die Bildliste. Wenn die Hintergrundfarbe der CLR_NONE Wert ist, wird das Bild mithilfe der Maske transparent gezeichnet.
ILD_TRANSPARENT Zeichnet das Bild unabhängig von der Hintergrundfarbe transparent mithilfe der Maske.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Beispiel

Ein Beispiel hierfür finden Sie unter CImageList::SetOverlayImage.

CImageList::DrawEx

Zeichnet ein Bildlistenelement im angegebenen Gerätekontext.

BOOL DrawEx(
    CDC* pDC,
    int nImage,
    POINT pt,
    SIZE sz,
    COLORREF clrBk,
    COLORREF clrFg,
    UINT nStyle);

Parameter

pDC
Zeiger auf den Zielgerätekontext.

nImage
Nullbasierter Index des zu zeichnenden Bilds.

pt
Position, an der innerhalb des angegebenen Gerätekontexts gezeichnet werden soll.

sz
Größe des Bildteils, der relativ zur oberen linken Ecke des Bilds gezeichnet werden soll. Anzeigen dx und dy Einfügen ImageList_DrawEx im Windows SDK.

clrBk
Hintergrundfarbe des Bilds. Siehe rgbBk im ImageList_DrawEx Windows SDK.

clrFg
Vordergrundfarbe des Bilds. Siehe rgbFg im ImageList_DrawEx Windows SDK.

nStyle
Kennzeichen, das das Zeichenformat angibt. Siehe fStyle im ImageList_DrawEx Windows SDK.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Die Funktion verwendet den angegebenen Zeichenstil und blendet das Bild mit der angegebenen Farbe zusammen.

Beispiel

m_myImageList.DrawEx(&dc, 0, CPoint(0, 0), CSize(16, 16), CLR_DEFAULT,
                     CLR_DEFAULT, ILD_IMAGE);

CImageList::DrawIndirect

Rufen Sie diese Memberfunktion auf, um ein Bild aus einer Bildliste zu zeichnen.

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);

Parameter

pimldp
Ein Zeiger auf eine IMAGELISTDRAWPARAMS Struktur, die Informationen zum Zeichnen enthält.

pDC
Ein Zeiger auf den Zielgerätekontext. Sie müssen dieses CDC Objekt löschen, wenn Sie damit fertig sind.

nImage
Der nullbasierte Index des zu zeichnenden Bilds.

pt
Eine POINT Struktur, die die x- und y-Koordinaten enthält, in der das Bild gezeichnet wird.

sz
Eine SIZE Struktur, die die Größe des zu zeichnenden Bilds angibt.

ptOrigin
Eine POINT Struktur mit den X- und Y-Koordinaten, die die obere linke Ecke des Zeichnungsvorgangs in Bezug auf das Bild selbst angeben. Pixel des Bilds, die links neben der X-Koordinate und oberhalb der Y-Koordinate liegen, werden nicht gezeichnet.

fStyle
Kennzeichen, das den Zeichenstil und optional das Überlagerungsbild angibt. Informationen zum Überlagerungsbild finden Sie im Abschnitt "Hinweise". Die MFC-Standardimplementierung ILD_NORMALzeichnet das Bild mithilfe der Hintergrundfarbe für die Bildliste. Wenn die Hintergrundfarbe der CLR_NONE Wert ist, wird das Bild mithilfe einer Maske transparent gezeichnet.

Weitere mögliche Formatvorlagen werden unter dem fStyle Element der IMAGELISTDRAWPARAMS Struktur beschrieben.

dwRop
Wert, der einen Rastervorgangscode angibt. Diese Codes definieren, wie die Farbdaten für das Quellrechteck mit den Farbdaten für das Zielrechteck kombiniert werden, um die endgültige Farbe zu erzielen. Die Standardimplementierung SRCCOPYvon MFC kopiert das Quellrechteck direkt in das Zielrechteck. Dieser Parameter wird ignoriert, wenn der fStyle Parameter das ILD_ROP Flag nicht enthält.

Weitere mögliche Werte werden unter dem dwRop Element der IMAGELISTDRAWPARAMS Struktur beschrieben.

rgbBack
Die Hintergrundfarbe des Bilds standardmäßig CLR_DEFAULT. Dieser Parameter kann ein anwendungsdefinierter RGB-Wert oder einer der folgenden Werte sein:

Wert Bedeutung
CLR_DEFAULT Standardhintergrundfarbe. Das Bild wird mithilfe der Hintergrundfarbe der Bildliste gezeichnet.
CLR_NONE Keine Hintergrundfarbe. Das Bild wird transparent gezeichnet.

rgbFore
Vordergrundfarbe des Bilds, standardmäßig CLR_DEFAULT. Dieser Parameter kann ein anwendungsdefinierter RGB-Wert oder einer der folgenden Werte sein:

Wert Bedeutung
CLR_DEFAULT Standard-Vordergrundfarbe. Das Bild wird mit der Systemmarkierungsfarbe als Vordergrundfarbe gezeichnet.
CLR_NONE Keine Mischungsfarbe. Das Bild wird mit der Farbe des Zielgerätekontexts kombiniert.

Dieser Parameter wird nur verwendet, wenn fStyle er das ILD_BLEND25 Attribut enthält ILD_BLEND50 .

fState
Kennzeichen, das den Zeichnungszustand angibt. Dieses Element kann ein oder mehrere Bildlistenstatuskennzeichnungen enthalten.

Frame
Wirkt sich auf das Verhalten von Sättigungs- und Alphamischungseffekten aus.

Bei Verwendung mit ILS_SATURATEdiesem Element enthält dieses Element den Wert, der jeder Farbkomponente des RGB-Triplets für jedes Pixel im Symbol hinzugefügt wird.

Bei Verwendung mit ILS_APLHAdiesem Element wird der Wert für den Alphakanal enthalten. Dieser Wert kann zwischen 0 und 255 sein, wobei 0 vollständig transparent ist und 255 vollständig undurchsichtig ist.

crEffect
Ein COLORREF Wert, der für Leucht- und Schatteneffekte verwendet wird.

Rückgabewert

TRUE wenn das Bild erfolgreich gezeichnet wird; andernfalls FALSE.

Hinweise

Verwenden Sie die erste Version, wenn Sie die Win32-Struktur selbst ausfüllen möchten. Verwenden Sie die zweite Version, wenn Sie eines oder mehrere der Standardargumente von MFC nutzen möchten, oder vermeiden Sie die Verwaltung der Struktur.

Ein Überlagerungsbild ist ein Bild, das über dem primären Bild gezeichnet wird, das in dieser Memberfunktion durch den nImage Parameter angegeben wird. Zeichnen Sie ein Überlagerungsformat mithilfe der Draw Memberfunktion mit dem 1-basierten Index der überlagerten Maske, die mithilfe des INDEXTOOVERLAYMASK Makros angegeben wird.

Beispiel

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

Rufen Sie diese Funktion auf, um einen Ziehvorgang zu beenden.

static void PASCAL EndDrag();

Hinweise

Verwenden Sie die BeginDrag Memberfunktion, um einen Ziehvorgang zu starten.

Beispiel

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

Rufen Sie diese Funktion auf, um ein Symbol basierend auf einem Bild und dessen zugehöriger Maske in einer Bildliste zu erstellen.

HICON ExtractIcon(int nImage);

Parameter

nImage
Nullbasierter Index des Bilds.

Rückgabewert

Handle des Symbols bei erfolgreicher Ausführung; andernfalls NULL.

Hinweise

Diese Methode basiert auf dem Verhalten des ImageList_ExtractIcon Makros, um das Symbol zu erstellen. Weitere Informationen zum Erstellen und Bereinigen von Symbolen finden Sie im ImageList_ExtractIcon Makro.

Beispiel

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

Gibt einen Zeiger auf ein CImageList Objekt zurück, wenn ein Handle für eine Bildliste angegeben wird.

static CImageList* PASCAL FromHandle(HIMAGELIST hImageList);

Parameter

hImageList
Gibt die Bildliste an.

Rückgabewert

Ein Zeiger auf ein CImageList Objekt bei erfolgreicher Ausführung; andernfalls NULL.

Hinweise

Wenn ein CImageList Objekt noch nicht an das Handle angefügt ist, wird ein temporäres CImageList Objekt erstellt und angefügt. Dieses temporäre CImageList Objekt ist nur gültig, bis die Anwendung das nächste Mal leerlauf in der Ereignisschleife hat, zu der zeitpunkt, zu dem alle temporären Objekte gelöscht werden.

Beispiel

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

Gibt einen Zeiger auf ein CImageList Objekt zurück, wenn ein Handle für eine Bildliste angegeben wird.

static CImageList* PASCAL FromHandlePermanent(HIMAGELIST hImageList);

Parameter

hImageList
Gibt die Bildliste an.

Rückgabewert

Ein Zeiger auf ein CImageList Objekt bei erfolgreicher Ausführung; andernfalls NULL.

Hinweise

Wenn ein CImageList Objekt nicht an das Handle angefügt ist, NULL wird dieses zurückgegeben.

Beispiel

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

Rufen Sie diese Funktion auf, um die aktuelle Hintergrundfarbe für eine Bildliste abzurufen.

COLORREF GetBkColor() const;

Rückgabewert

Der RGB-Farbwert der CImageList Objekthintergrundfarbe.

Beispiel

Ein Beispiel hierfür finden Sie unter CImageList::SetBkColor.

CImageList::GetDragImage

Ruft die temporäre Bildliste ab, die zum Ziehen verwendet wird.

static CImageList* PASCAL GetDragImage(
    LPPOINT lpPoint,
    LPPOINT lpPointHotSpot);

Parameter

lpPoint
Adresse einer POINT Struktur, die die aktuelle Ziehposition empfängt.

lpPointHotSpot
Adresse einer POINT Struktur, die den Offset des Ziehbilds relativ zur Ziehposition empfängt.

Rückgabewert

Bei erfolgreicher Ausführung zeigt ein Zeiger auf die temporäre Bildliste, die zum Ziehen verwendet wird. andernfalls . NULL

CImageList::GetImageCount

Rufen Sie diese Funktion auf, um die Anzahl der Bilder in einer Bildliste abzurufen.

int GetImageCount() const;

Rückgabewert

Die Anzahl der Bilder.

Beispiel

Ein Beispiel hierfür finden Sie unter CImageList::ExtractIcon.

CImageList::GetImageInfo

Rufen Sie diese Funktion auf, um Informationen zu einem Bild abzurufen.

BOOL GetImageInfo(
    int nImage,
    IMAGEINFO* pImageInfo) const;

Parameter

nImage
Nullbasierter Index des Bilds.

pImageInfo
Zeigen Sie auf eine IMAGEINFO Struktur, die Informationen über das Bild empfängt. Die Informationen in dieser Struktur können verwendet werden, um die Bitmaps für das Bild direkt zu bearbeiten.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Die IMAGEINFO Struktur enthält Informationen zu einem Bild in einer Bildliste.

CImageList::GetSafeHandle

Rufen Sie diese Funktion auf, um das m_hImageList Datenelement abzurufen.

HIMAGELIST GetSafeHandle() const;

Rückgabewert

Ein Handle für die angefügte Bildliste; andernfalls NULL wird kein Objekt angefügt.

Beispiel

// Get the safe handle to the image list.
HIMAGELIST hImageList = m_myImageList.GetSafeHandle();

CImageList::m_hImageList

Ein Handle der an dieses Objekt angefügten Bildliste.

HIMAGELIST m_hImageList;

Hinweise

Das m_hImageList Datenelement ist eine öffentliche Variable vom Typ HIMAGELIST.

Beispiel

// Get the safe handle to the image list.
HIMAGELIST hImageList = m_myImageList.m_hImageList;

CImageList::operator HIMAGELIST

Verwenden Sie diesen Operator, um das angefügte Handle des CImageList Objekts abzurufen.

operator HIMAGELIST() const;

Rückgabewert

Bei erfolgreicher Ausführung ein Handle für die Bildliste, die durch das CImageList Objekt dargestellt wird; andernfalls NULL.

Hinweise

Dieser Operator ist ein Umwandlungsoperator, der die direkte Verwendung eines HIMAGELIST Objekts unterstützt.

Beispiel

// Get the safe handle to the image list.
HIMAGELIST hImageList = m_myImageList;

CImageList::Read

Rufen Sie diese Funktion auf, um eine Bildliste aus einem Archiv zu lesen.

BOOL Read(CArchive* pArchive);

Parameter

pArchive
Ein Zeiger auf ein CArchive Objekt, aus dem die Bildliste gelesen werden soll.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Beispiel

// 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

Rufen Sie diese Funktion auf, um ein Bild aus einem Bildlistenobjekt zu entfernen.

BOOL Remove(int nImage);

Parameter

nImage
Nullbasierter Index des zu entfernenden Bilds.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Alle elemente, die jetzt folgen, nImage bewegen sich um eine Position nach unten. Wenn z. B. eine Bildliste zwei Elemente enthält, führt das Löschen des ersten Elements dazu, dass sich das verbleibende Element jetzt an der ersten Position befindet. nImage=0 für das Element an der ersten Position.

Beispiel

// Remove every other image from the image list.
for (int i = 0; i < m_myImageList.GetImageCount(); i++)
{
   m_myImageList.Remove(i);
}

CImageList::Replace

Rufen Sie diese Funktion auf, um ein Bild in einer Bildliste durch ein neues Bild zu ersetzen.

BOOL Replace(
    int nImage,
    CBitmap* pbmImage,
    CBitmap* pbmMask);

int Replace(
    int nImage,
    HICON hIcon);

Parameter

nImage
Nullbasierter Index des zu ersetzenden Bilds.

pbmImage
Ein Zeiger auf die Bitmap, die das Bild enthält.

pbmMask
Ein Zeiger auf die Bitmap, die die Maske enthält. Wenn keine Maske mit der Bildliste verwendet wird, wird dieser Parameter ignoriert.

hIcon
Ein Handle für das Symbol, das die Bitmap und die Maske für das neue Bild enthält.

Rückgabewert

Die zurückgegebene BOOL Version gibt einen Wert ungleich Null zurück, wenn dies erfolgreich ist; andernfalls 0.

Die zurückgegebene int Version gibt den nullbasierten Index des Bilds zurück, wenn dies erfolgreich ist; andernfalls - 1.

Hinweise

Rufen Sie diese Memberfunktion nach dem Aufrufen SetImageCount auf, um die neuen, gültigen Bilder den Platzhalterbildindexnummern zuzuweisen.

Beispiel

Ein Beispiel hierfür finden Sie unter CImageList::SetImageCount.

CImageList::SetBkColor

Rufen Sie diese Funktion auf, um die Hintergrundfarbe für eine Bildliste festzulegen.

COLORREF SetBkColor(COLORREF cr);

Parameter

cr
Festzulegende Hintergrundfarbe. Kann CLR_NONE sein. In diesem Fall werden Bilder mithilfe der Maske transparent gezeichnet.

Rückgabewert

Die vorherige Hintergrundfarbe bei erfolgreicher Ausführung; andernfalls CLR_NONE.

Beispiel

// Set the background color to white.
m_myImageList.SetBkColor(RGB(255, 255, 255));
ASSERT(m_myImageList.GetBkColor() == RGB(255, 255, 255));

CImageList::SetDragCursorImage

Erstellt ein neues Ziehbild, indem das angegebene Bild (in der Regel ein Mauszeigerbild) mit dem aktuellen Ziehbild kombiniert wird.

BOOL SetDragCursorImage(
    int nDrag,
    CPoint ptHotSpot);

Parameter

nDrag
Index des neuen Bilds, das mit dem Ziehbild kombiniert werden soll.

ptHotSpot
Position des Hotspots innerhalb des neuen Bilds.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Da die Ziehfunktionen das neue Bild während eines Ziehvorgangs verwenden, sollten Sie die Windows-Funktion ShowCursor verwenden, um den eigentlichen Mauscursor nach dem Aufrufen CImageList::SetDragCursorImageauszublenden. Andernfalls scheint das System zwei Mauszeiger für die Dauer des Ziehvorgangs zu haben.

CImageList::SetImageCount

Rufen Sie diese Memberfunktion auf, um die Anzahl der Bilder in einem CImageList Objekt zurückzusetzen.

BOOL SetImageCount(UINT uNewCount);

Parameter

uNewCount
Der Wert, der die neue Gesamtanzahl von Bildern in der Bildliste angibt.

Rückgabewert

Ungleich 0, wenn erfolgreich, andernfalls 0.

Hinweise

Wenn Sie diese Memberfunktion aufrufen, um die Anzahl der Bilder in der Bildliste zu erhöhen, rufen Replace Sie jedes zusätzliche Bild auf, um die neuen Indizes gültigen Bildern zuzuweisen. Wenn Sie die Indizes nicht gültigen Bildern zuweisen können, sind Zeichnungsvorgänge, die die neuen Bilder erstellen, unvorhersehbar.

Wenn Sie die Größe einer Bildliste mithilfe dieser Funktion verringern, werden die abgeschnittenen Bilder freigegeben.

Beispiel

// 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

Rufen Sie diese Funktion auf, um den nullbasierten Index eines Bilds zur Liste der Bilder hinzuzufügen, die als Überlagerungsmasken verwendet werden sollen.

BOOL SetOverlayImage(
    int nImage,
    int nOverlay);

Parameter

nImage
Nullbasierter Index des Bilds, das als Überlagerungsmaske verwendet werden soll.

nOverlay
Ein 1-basierter Index der Überlagerungsmaske.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Bis zu vier Indizes können der Liste hinzugefügt werden.

Eine Überlagerungsmaske ist ein Bild, das transparent über ein anderes Bild gezeichnet wird. Zeichnen Sie eine Überlagerungsmaske über ein Bild, indem Sie die CImageList::Draw Memberfunktion mit dem 1-basierten Index der überlagerten Maske verwenden, die mithilfe des INDEXTOOVERLAYMASK Makros angegeben wird.

Beispiel

// 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

Rufen Sie diese Funktion auf, um ein Bildlistenobjekt in ein Archiv zu schreiben.

BOOL Write(CArchive* pArchive);

Parameter

pArchive
Ein Zeiger auf ein CArchive Objekt, in dem die Bildliste gespeichert werden soll.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Beispiel

// 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);

Siehe auch

CObject-Klasse
Hierarchiediagramm
CListCtrl Klasse
CTabCtrl Klasse