Dela via


CImageList-klass

Tillhandahåller funktionerna i den vanliga avbildningslistekontrollen i Windows.

Syntax

class CImageList : public CObject

Medlemmar

Offentliga konstruktorer

Namn Beskrivning
CImageList::CImageList Konstruerar ett CImageList objekt.

Offentliga metoder

Namn Beskrivning
CImageList::Add Lägger till en bild eller bilder i en bildlista.
CImageList::Attach Bifogar en bildlista till ett CImageList objekt.
CImageList::BeginDrag Börjar dra en bild.
CImageList::Copy Kopierar en bild i ett CImageList objekt.
CImageList::Create Initierar en bildlista och kopplar den till ett CImageList objekt.
CImageList::DeleteImageList Tar bort en bildlista.
CImageList::DeleteTempMap Anropas av CWinApp hanteraren för inaktivitetstid för att ta bort alla temporära CImageList objekt som skapats av FromHandle.
CImageList::Detach Kopplar från ett bildlistobjekt från ett CImageList objekt och returnerar ett handtag till en bildlista.
CImageList::DragEnter Låser uppdateringar under en dragåtgärd och visar dragbilden vid en angiven position.
CImageList::DragLeave Låser upp fönstret och döljer dra bilden så att fönstret kan uppdateras.
CImageList::DragMove Flyttar den bild som dras under en dra och släpp-åtgärd.
CImageList::DragShowNolock Visar eller döljer dra-bilden under en dragåtgärd, utan att låsa fönstret.
CImageList::Draw Ritar den bild som dras under en dra och släpp-åtgärd.
CImageList::DrawEx Ritar ett bildlistobjekt i den angivna enhetskontexten. Funktionen använder det angivna ritningsformatet och blandar bilden med den angivna färgen.
CImageList::DrawIndirect Ritar en bild från en bildlista.
CImageList::EndDrag Avslutar en dragåtgärd.
CImageList::ExtractIcon Skapar en ikon baserat på en bild och mask i en bildlista.
CImageList::FromHandle Returnerar en pekare till ett CImageList objekt när det ges ett handtag till en bildlista. Om ett CImageList objekt inte är kopplat till handtaget skapas och kopplas ett tillfälligt CImageList objekt.
CImageList::FromHandlePermanent Returnerar en pekare till ett CImageList objekt när det ges ett handtag till en bildlista. Om ett CImageList objekt inte är kopplat till handtaget returneras NULL.
CImageList::GetBkColor Hämtar den aktuella bakgrundsfärgen för en bildlista.
CImageList::GetDragImage Hämtar den temporära bildlista som används för att dra.
CImageList::GetImageCount Hämtar antalet bilder i en bildlista.
CImageList::GetImageInfo Hämtar information om en bild.
CImageList::GetSafeHandle Hämtar m_hImageList.
CImageList::Read Läser en bildlista från ett arkiv.
CImageList::Remove Tar bort en bild från en bildlista.
CImageList::Replace Ersätter en bild i en bildlista med en ny bild.
CImageList::SetBkColor Anger bakgrundsfärgen för en bildlista.
CImageList::SetDragCursorImage Skapar en ny dra-bild.
CImageList::SetImageCount Återställer antalet bilder i en bildlista.
CImageList::SetOverlayImage Lägger till det nollbaserade indexet för en bild i listan över bilder som ska användas som överläggsmasker.
CImageList::Write Skriver en bildlista till ett arkiv.

Offentliga operatörer

Namn Beskrivning
CImageList::operator HIMAGELIST Returnerar den HIMAGELIST kopplade till CImageList.

Medlemmar i offentliga data

Namn Beskrivning
CImageList::m_hImageList Ett handtag som innehåller den bildlista som är kopplad till det här objektet.

Anmärkningar

En "bildlista" är en samling bilder i samma storlek som var och en kan refereras till av dess nollbaserade index. Bildlistor används för att effektivt hantera stora uppsättningar ikoner eller bitmappar. Alla bilder i en bildlista finns i en enda, bred bitmapp i skärmenhetsformat. En bildlista kan också innehålla en monokrom bitmapp som innehåller masker som används för att rita bilder transparent (ikonformat). Microsoft Win32-programmets programmeringsgränssnitt (API) innehåller funktioner för bildlistor som gör att du kan rita bilder, skapa och förstöra bildlistor, lägga till och ta bort bilder, ersätta bilder, slå samman bilder och dra bilder.

Den här kontrollen (och därmed klassen CImageList) är endast tillgänglig för program som körs under Windows 95/98 och Windows NT version 3.51 och senare.

Mer information om hur du använder finns CImageListi Kontroller och Använda CImageList.

Arvshierarki

CObject

CImageList

Kravspecifikation

rubrik:afxcmn.h

CImageList::Add

Anropa den här funktionen för att lägga till en eller flera bilder eller en ikon i en bildlista.

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

int Add(
    CBitmap* pbmImage,
    COLORREF crMask);

int Add(HICON hIcon);

Parameterar

pbmImage
Pekare till bitmappen som innehåller bilden eller bilderna. Antalet bilder härleds från bitmappens bredd.

pbmMask
Pekare till bitmappen som innehåller masken. Om ingen mask används med bildlistan ignoreras den här parametern.

crMask
Färg som används för att generera masken. Varje bildpunkt i den här färgen i den angivna bitmappen ändras till svart och motsvarande bit i masken är inställd på en.

hIcon
Handtag för ikonen som innehåller bitmappen och masken för den nya bilden.

Returvärde

Nollbaserat index för den första nya avbildningen om den lyckas. annars - 1.

Anmärkningar

Du ansvarar för att släppa ikonhandtaget när du är klar med det.

Exempel

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

Anropa den här funktionen för att bifoga en bildlista till ett CImageList objekt.

BOOL Attach(HIMAGELIST hImageList);

Parameterar

hImageList
Ett handtag till ett bildlistobjekt.

Returvärde

Nonzero om den bifogade filen lyckades; annars 0.

Exempel

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

Anropa den här funktionen för att börja dra en bild.

BOOL BeginDrag(
    int nImage,
    CPoint ptHotSpot);

Parameterar

nImage
Nollbaserat index för bilden som ska dras.

ptHotSpot
Koordinater för den inledande dragpositionen (vanligtvis markörpositionen). Koordinaterna är relativa till bildens övre vänstra hörn.

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Den här funktionen skapar en tillfällig bildlista som används för att dra. Bilden kombinerar den angivna bilden och dess mask med den aktuella markören. Som svar på efterföljande WM_MOUSEMOVE meddelanden kan du flytta dra-bilden med hjälp DragMove av medlemsfunktionen. Om du vill avsluta dragåtgärden EndDrag kan du använda medlemsfunktionen.

Exempel

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

Konstruerar ett CImageList objekt.

CImageList();

CImageList::Copy

Den här medlemsfunktionen implementerar beteendet för funktionen ImageList_CopyWin32 , enligt beskrivningen i Windows SDK.

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

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

Parameterar

iDst
Det nollbaserade indexet för avbildningen som ska användas som mål för kopieringsåtgärden.

iSrc
Det nollbaserade indexet för avbildningen som ska användas som källa för kopieringsåtgärden.

uFlags
Bitflaggans värde som anger vilken typ av kopieringsåtgärd som ska utföras. Den här parametern kan vara ett av följande värden:

Värde Innebörd
ILCF_MOVE Källbilden kopieras till målbildens index. Den här åtgärden resulterar i flera instanser av en viss avbildning. ILCF_MOVE används som standard.
ILCF_SWAP Käll- och målbilderna utbyter positioner i bildlistan.

pSrc
En pekare till ett CImageList objekt som är målet för kopieringsåtgärden.

Returvärde

Nonzero om det lyckas; annars noll.

Exempel

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

Initierar en bildlista och kopplar den till ett CImageList objekt.

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

Parameterar

cx
Dimensioner för varje bild, i bildpunkter.

cy
Dimensioner för varje bild, i bildpunkter.

nFlags
Anger vilken typ av bildlista som ska skapas. Den här parametern kan vara en kombination av följande värden, men den kan bara innehålla ett av ILC_COLOR värdena.

Värde Innebörd
ILC_COLOR Använd standardbeteendet om ingen av de andra ILC_COLOR* flaggorna har angetts. Standardvärdet är ILC_COLOR4vanligtvis ; men för äldre visningsdrivrutiner är ILC_COLORDDBstandardvärdet .
ILC_COLOR4 Använd ett 4-bitars (16-bitars) enhetsoberoende bitmappsavsnitt (DIB) som bitmapp för bildlistan.
ILC_COLOR8 Använd ett 8-bitars DIB-avsnitt. Färgerna som används för färgtabellen är samma färger som halvtonpaletten.
ILC_COLOR16 Använd ett 16-bitars (32/64k färg) DIB-avsnitt.
ILC_COLOR24 Använd ett 24-bitars DIB-avsnitt.
ILC_COLOR32 Använd ett 32-bitars DIB-avsnitt.
ILC_COLORDDB Använd en enhetsberoende bitmapp.
ILC_MASK Använder en mask. Bildlistan innehåller två bitmappar, varav en är en monokrom bitmapp som används som mask. Om det här värdet inte ingår innehåller bildlistan bara en bitmapp. Mer information om maskerade bilder finns i Rita bilder från en bildlista .

nInitial
Antal bilder som bildlistan ursprungligen innehåller.

nGrow
Antalet bilder som bildlistan kan växa med när systemet behöver ändra storlek på listan för att göra plats för nya bilder. Den här parametern representerar antalet nya bilder som listan över storleksanpassade avbildningar kan innehålla.

nBitmapID
Resurs-ID:t för bitmappen som ska associeras med bildlistan.

crMask
Färg som används för att generera en mask. Varje bildpunkt i den här färgen i den angivna bitmappen ändras till svart och motsvarande bit i masken är inställd på en.

lpszBitmapID
En sträng som innehåller resurs-ID:t för bilderna.

imagelist1
En referens till ett CImageList objekt.

nImage1
Index för den första befintliga avbildningen.

imagelist2
En referens till ett CImageList objekt.

nImage2
Index för den andra befintliga avbildningen.

dx
Förskjutning av x-axeln för den andra bilden i relation till den första bilden, i bildpunkter.

dy
Förskjutning av y-axeln för den andra bilden i relation till den första bilden, i bildpunkter.

pImageList
En pekare till ett CImageList objekt.

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Du skapar en CImageList i två steg. Anropa först konstruktorn och anropa Createsedan , vilket skapar avbildningslistan och kopplar den CImageList till objektet.

Exempel

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

CImageList::DeleteImageList

Anropa den här funktionen för att ta bort en bildlista.

BOOL DeleteImageList();

Returvärde

Nonzero om det lyckas; annars 0.

Exempel

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

CImageList::DeleteTempMap

Anropas automatiskt av CWinApp hanteraren för inaktivitetstid, DeleteTempMap tar bort alla temporära CImageList objekt som skapats av FromHandle, men förstör inte några referenser (hImageList) som tillfälligt är associerade med objekten ImageList .

static void PASCAL DeleteTempMap();

Exempel

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

CImageList::Detach

Anropa den här funktionen för att koppla från ett bildlisteobjekt från ett CImageList objekt.

HIMAGELIST Detach();

Returvärde

Ett handtag till ett bildlistobjekt.

Anmärkningar

Den här funktionen returnerar ett handtag till bildlisteobjektet.

Exempel

Se exemplet för CImageList::Attach.

CImageList::DragEnter

Under en dragåtgärd låser du uppdateringar av fönstret som anges av pWndLock och visar dragbilden vid den position som anges av point.

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

Parameterar

pWndLock
Pekare till fönstret som äger dra-bilden.

point
Position där dra bilden ska visas. Koordinaterna är relativa till det övre vänstra hörnet i fönstret (inte klientområdet).

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Koordinaterna är i förhållande till fönstrets övre vänstra hörn, så du måste kompensera för bredden på fönsterelement, till exempel kantlinje, namnlist och menyrad, när du anger koordinaterna.

Om pWndLock är NULLritar den här funktionen bilden i visningskontexten som är associerad med skrivbordsfönstret, och koordinaterna är relativa till det övre vänstra hörnet på skärmen.

Den här funktionen låser alla andra uppdateringar i det angivna fönstret under dra-åtgärden. Om du behöver göra någon ritning under en dragåtgärd, till exempel markera målet för en dra och släpp-åtgärd, kan du tillfälligt dölja den dragna bilden med hjälp CImageList::DragLeave av funktionen.

Exempel

Se exemplet för CImageList::BeginDrag.

CImageList::DragLeave

Låser upp fönstret som anges av pWndLock och döljer dra-avbildningen så att fönstret kan uppdateras.

static BOOL PASCAL DragLeave(CWnd* pWndLock);

Parameterar

pWndLock
Pekare till fönstret som äger dra-bilden.

Returvärde

Nonzero om det lyckas; annars 0.

Exempel

Se exemplet för CImageList::EndDrag.

CImageList::DragMove

Anropa den här funktionen för att flytta den bild som dras under en dra och släpp-åtgärd.

static BOOL PASCAL DragMove(CPoint pt);

Parameterar

pt
Ny dragposition.

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Den här funktionen anropas vanligtvis som svar på ett WM_MOUSEMOVE meddelande. Om du vill påbörja en dragåtgärd använder du BeginDrag medlemsfunktionen.

Exempel

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

   CDialog::OnMouseMove(nFlags, point);
}

CImageList::DragShowNolock

Visar eller döljer dra-bilden under en dragåtgärd, utan att låsa fönstret.

static BOOL PASCAL DragShowNolock(BOOL bShow);

Parameterar

bShow
Anger om dra-bilden ska visas.

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Funktionen CImageList::DragEnter låser alla uppdateringar av fönstret under en dragåtgärd. Den här funktionen låser dock inte fönstret.

CImageList::Draw

Anropa den här funktionen för att rita den bild som dras under en dra och släpp-åtgärd.

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

Parameterar

pDC
Pekare mot målenhetskontexten.

nImage
Nollbaserat index för bilden som ska ritas.

pt
Plats där du kan rita inom den angivna enhetskontexten.

nStyle
Flagga som anger ritningsformatet. Det kan vara ett eller flera av följande värden:

Värde Innebörd
ILD_BLEND25, ILD_FOCUS Ritar bilden och blandar 25 procent med systemets markeringsfärg. Det här värdet har ingen effekt om bildlistan inte innehåller någon mask.
ILD_BLEND50, , ILD_SELECTEDILD_BLEND Ritar bilden och blandar 50 procent med systemets markeringsfärg. Det här värdet har ingen effekt om bildlistan inte innehåller någon mask.
ILD_MASK Ritar masken.
ILD_NORMAL Ritar bilden med bakgrundsfärgen för bildlistan. Om bakgrundsfärgen CLR_NONE är värdet ritas bilden transparent med masken.
ILD_TRANSPARENT Ritar bilden transparent med masken, oavsett bakgrundsfärg.

Returvärde

Nonzero om det lyckas; annars 0.

Exempel

Se exemplet för CImageList::SetOverlayImage.

CImageList::DrawEx

Ritar ett bildlistobjekt i den angivna enhetskontexten.

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

Parameterar

pDC
Pekare mot målenhetskontexten.

nImage
Nollbaserat index för bilden som ska ritas.

pt
Plats där du kan rita inom den angivna enhetskontexten.

sz
Storleken på den del av bilden som ska ritas i förhållande till bildens övre vänstra hörn. Se dx och dy i ImageList_DrawEx Windows SDK.

clrBk
Bakgrundsfärg för bilden. Se rgbBk i ImageList_DrawEx Windows SDK.

clrFg
Bildens förgrundsfärg. Se rgbFg i ImageList_DrawEx Windows SDK.

nStyle
Flagga som anger ritningsformatet. Se fStyle i ImageList_DrawEx Windows SDK.

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Funktionen använder det angivna ritningsformatet och blandar bilden med den angivna färgen.

Exempel

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

CImageList::DrawIndirect

Anropa den här medlemsfunktionen för att rita en bild från en bildlista.

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

Parameterar

pimldp
En pekare till en IMAGELISTDRAWPARAMS struktur som innehåller information om dragningsåtgärden.

pDC
En pekare till målenhetens kontext. Du måste ta bort det här CDC objektet när du är klar med det.

nImage
Det nollbaserade indexet för den bild som ska ritas.

pt
En POINT struktur som innehåller x- och y-koordinaterna där bilden kommer att ritas.

sz
En SIZE struktur som anger storleken på bilden som ska ritas.

ptOrigin
En POINT struktur som innehåller x- och y-koordinaterna som anger det övre vänstra hörnet av ritningsåtgärden med avseende på själva bilden. Bildpunkter i bilden som är till vänster om x-koordinaten och ovanför y-koordinaten ritas inte.

fStyle
Flagga som anger ritningsformatet och eventuellt överläggsbilden. Mer information om överläggsbilden finns i avsnittet Kommentarer. MFC-standardimplementeringen, ILD_NORMAL, ritar bilden med bakgrundsfärgen för bildlistan. Om bakgrundsfärgen CLR_NONE är värdet ritas bilden transparent med hjälp av en mask.

Andra möjliga format beskrivs under fStyle medlemmen i IMAGELISTDRAWPARAMS strukturen.

dwRop
Värde som anger en rasteråtgärdskod. Dessa koder definierar hur färgdata för källrektangeln ska kombineras med färgdata för målrektangeln för att uppnå den slutliga färgen. MFC:s standardimplementering, SRCCOPY, kopierar källrektangeln direkt till målrektangeln. Den här parametern ignoreras om parametern fStyle inte innehåller ILD_ROP flaggan.

Andra möjliga värden beskrivs under dwRop medlemmen i IMAGELISTDRAWPARAMS strukturen.

rgbBack
Bildens bakgrundsfärg, som standard CLR_DEFAULT. Den här parametern kan vara ett programdefinierat RGB-värde eller något av följande värden:

Värde Innebörd
CLR_DEFAULT Standardbakgrundsfärg. Bilden ritas med bakgrundsfärgen i bildlistan.
CLR_NONE Ingen bakgrundsfärg. Bilden ritas transparent.

rgbFore
Bildförgrundsfärg, som standard CLR_DEFAULT. Den här parametern kan vara ett programdefinierat RGB-värde eller något av följande värden:

Värde Innebörd
CLR_DEFAULT Standardfärg för förgrund. Bilden ritas med hjälp av systemets markeringsfärg som förgrundsfärg.
CLR_NONE Ingen blandningsfärg. Bilden blandas med färgen på målenhetens kontext.

Den här parametern används endast om fStyle den ILD_BLEND25 innehåller flaggan eller ILD_BLEND50 .

fState
Flagga som anger ritningstillståndet. Den här medlemmen kan innehålla en eller flera flaggor för bildlistans tillstånd.

Frame
Påverkar beteendet för mättade och alfablandande effekter.

När den används med ILS_SATURATEinnehåller den här medlemmen det värde som läggs till i varje färgkomponent i RGB-trillingen för varje pixel i ikonen.

När den används med ILS_APLHAinnehåller den här medlemmen värdet för alfakanalen. Det här värdet kan vara från 0 till 255, där 0 är helt transparent och 255 är helt ogenomskinliga.

crEffect
Ett COLORREF värde som används för ljusskens- och skuggeffekter.

Returvärde

TRUE om bilden har ritats. annars FALSE.

Anmärkningar

Använd den första versionen om du vill fylla Win32-strukturen själv. Använd den andra versionen om du vill dra nytta av ett eller flera av MFC:s standardargument eller undvika att hantera strukturen.

En överläggsbild är en bild som ritas ovanpå den primära avbildningen, som anges i den här medlemsfunktionen av parametern nImage . Rita en överläggsmask med hjälp Draw av medlemsfunktionen med ett baserat index för överläggsmasken som anges med hjälp av makrot INDEXTOOVERLAYMASK .

Exempel

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

Anropa den här funktionen för att avsluta en dragåtgärd.

static void PASCAL EndDrag();

Anmärkningar

Om du vill påbörja en dragåtgärd använder du BeginDrag medlemsfunktionen.

Exempel

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

Anropa den här funktionen för att skapa en ikon baserat på en bild och dess relaterade mask i en bildlista.

HICON ExtractIcon(int nImage);

Parameterar

nImage
Nollbaserat index för bilden.

Returvärde

Ikonens handtag om det lyckas. annars NULL.

Anmärkningar

Den här metoden förlitar sig på makrots ImageList_ExtractIcon beteende för att skapa ikonen. Mer information om hur du skapar och rensar ikoner finns i makrot ImageList_ExtractIcon .

Exempel

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

Returnerar en pekare till ett CImageList objekt när det ges ett handtag till en bildlista.

static CImageList* PASCAL FromHandle(HIMAGELIST hImageList);

Parameterar

hImageList
Anger bildlistan.

Returvärde

En pekare till ett CImageList objekt om det lyckas, annars NULL.

Anmärkningar

Om ett CImageList inte redan är kopplat till handtaget skapas och kopplas ett tillfälligt CImageList objekt. Det här temporära CImageList objektet är endast giltigt till nästa gång programmet har inaktiv tid i händelseloopen, då alla temporära objekt tas bort.

Exempel

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

Returnerar en pekare till ett CImageList objekt när det ges ett handtag till en bildlista.

static CImageList* PASCAL FromHandlePermanent(HIMAGELIST hImageList);

Parameterar

hImageList
Anger bildlistan.

Returvärde

En pekare till ett CImageList objekt om det lyckas, annars NULL.

Anmärkningar

Om ett CImageList objekt inte är kopplat till handtaget NULL returneras.

Exempel

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

Anropa den här funktionen för att hämta den aktuella bakgrundsfärgen för en bildlista.

COLORREF GetBkColor() const;

Returvärde

RGB-färgvärdet för objektets bakgrundsfärg CImageList .

Exempel

Se exemplet för CImageList::SetBkColor.

CImageList::GetDragImage

Hämtar den temporära bildlista som används för att dra.

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

Parameterar

lpPoint
Adress för en POINT struktur som tar emot den aktuella dragpositionen.

lpPointHotSpot
Adress för en POINT struktur som tar emot förskjutningen av dragbilden i förhållande till dragpositionen.

Returvärde

Om det lyckas visas en pekare till den temporära bildlista som används för att dra. annars . NULL

CImageList::GetImageCount

Anropa den här funktionen för att hämta antalet bilder i en bildlista.

int GetImageCount() const;

Returvärde

Antalet bilder.

Exempel

Se exemplet för CImageList::ExtractIcon.

CImageList::GetImageInfo

Anropa den här funktionen för att hämta information om en bild.

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

Parameterar

nImage
Nollbaserat index för bilden.

pImageInfo
Pekare till en IMAGEINFO struktur som tar emot information om bilden. Informationen i den här strukturen kan användas för att direkt ändra bitmapparna för bilden.

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Strukturen IMAGEINFO innehåller information om en bild i en bildlista.

CImageList::GetSafeHandle

Anropa den här funktionen för att hämta m_hImageList datamedlemmen.

HIMAGELIST GetSafeHandle() const;

Returvärde

Ett handtag till den bifogade bildlistan. annars NULL om inget objekt är kopplat.

Exempel

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

CImageList::m_hImageList

Ett handtag för den bildlista som är kopplad till det här objektet.

HIMAGELIST m_hImageList;

Anmärkningar

Datamedlemmen m_hImageList är en offentlig variabel av typen HIMAGELIST.

Exempel

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

CImageList::operator HIMAGELIST

Använd den här operatorn för att hämta det anslutna handtaget för CImageList objektet.

operator HIMAGELIST() const;

Returvärde

Om det lyckas visas en referens till bildlistan som representeras av CImageList objektet, annars NULL.

Anmärkningar

Den här operatorn är en gjutningsoperator som stöder direkt användning av ett HIMAGELIST objekt.

Exempel

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

CImageList::Read

Anropa den här funktionen för att läsa en bildlista från ett arkiv.

BOOL Read(CArchive* pArchive);

Parameterar

pArchive
En pekare till ett CArchive objekt som bildlistan ska läsas från.

Returvärde

Nonzero om det lyckas; annars 0.

Exempel

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

Anropa den här funktionen för att ta bort en bild från ett bildlisteobjekt.

BOOL Remove(int nImage);

Parameterar

nImage
Nollbaserat index för avbildningen som ska tas bort.

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Alla objekt som följer nImage flyttas nu ned en position. Om en bildlista till exempel innehåller två objekt kommer borttagning av det första objektet att leda till att det återstående objektet nu befinner sig i den första positionen. nImage=0 för objektet i den första positionen.

Exempel

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

CImageList::Replace

Anropa den här funktionen för att ersätta en bild i en bildlista med en ny bild.

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

int Replace(
    int nImage,
    HICON hIcon);

Parameterar

nImage
Nollbaserat index för avbildningen som ska ersättas.

pbmImage
En pekare till bitmappen som innehåller bilden.

pbmMask
En pekare till bitmappen som innehåller masken. Om ingen mask används med bildlistan ignoreras den här parametern.

hIcon
Ett handtag till ikonen som innehåller bitmappen och masken för den nya bilden.

Returvärde

Den version som returneras returnerar BOOL icke-zero om den lyckas, annars 0.

Den version som returneras returnerar int det nollbaserade indexet för avbildningen om det lyckas, annars - 1.

Anmärkningar

Anropa den här medlemsfunktionen efter anrop SetImageCount för att tilldela de nya giltiga bilderna till platshållarbildens indexnummer.

Exempel

Se exemplet för CImageList::SetImageCount.

CImageList::SetBkColor

Anropa den här funktionen för att ange bakgrundsfärgen för en bildlista.

COLORREF SetBkColor(COLORREF cr);

Parameterar

cr
Bakgrundsfärg som ska anges. Det kan vara CLR_NONE. I så fall ritas bilderna transparent med hjälp av masken.

Returvärde

Den tidigare bakgrundsfärgen om den lyckas. annars CLR_NONE.

Exempel

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

CImageList::SetDragCursorImage

Skapar en ny dra-bild genom att kombinera den angivna bilden (vanligtvis en musmarkörbild) med den aktuella dra-bilden.

BOOL SetDragCursorImage(
    int nDrag,
    CPoint ptHotSpot);

Parameterar

nDrag
Index för den nya avbildningen som ska kombineras med dra-bilden.

ptHotSpot
Placering av den aktiva platsen i den nya bilden.

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Eftersom de drande funktionerna använder den nya avbildningen under en dragåtgärd bör du använda Windows-funktionen ShowCursor för att dölja den faktiska musmarkören efter att ha anropat CImageList::SetDragCursorImage. Annars kan systemet verka ha två musmarkörer under dragåtgärdens varaktighet.

CImageList::SetImageCount

Anropa den här medlemsfunktionen för att återställa antalet bilder i ett CImageList objekt.

BOOL SetImageCount(UINT uNewCount);

Parameterar

uNewCount
Värdet som anger det nya totala antalet bilder i bildlistan.

Returvärde

Nonzero om det lyckas; annars noll.

Anmärkningar

Om du anropar den här medlemsfunktionen för att öka antalet bilder i bildlistan anropar Replace du varje ytterligare bild för att tilldela de nya indexen till giltiga bilder. Om du inte tilldelar indexen till giltiga avbildningar blir det oförutsägbart att rita åtgärder som skapar de nya bilderna.

Om du minskar storleken på en bildlista med hjälp av den här funktionen frigörs de trunkerade bilderna.

Exempel

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

Anropa den här funktionen för att lägga till det nollbaserade indexet för en bild i listan över bilder som ska användas som överläggsmasker.

BOOL SetOverlayImage(
    int nImage,
    int nOverlay);

Parameterar

nImage
Nollbaserat index för bilden som ska användas som en överläggsmask.

nOverlay
Ett baserat index för överläggsmasken.

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Upp till fyra index kan läggas till i listan.

En överläggsmask är en bild som ritas transparent över en annan bild. Rita en överläggsmask över en bild med hjälp CImageList::Draw av medlemsfunktionen med det enbaserade indexet för överläggsmasken som anges med hjälp av makrot INDEXTOOVERLAYMASK .

Exempel

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

Anropa den här funktionen för att skriva ett bildlisteobjekt till ett arkiv.

BOOL Write(CArchive* pArchive);

Parameterar

pArchive
En pekare till ett CArchive objekt där bildlistan ska lagras.

Returvärde

Nonzero om det lyckas; annars 0.

Exempel

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

Se även

CObject klass
hierarkidiagram
CListCtrl klass
CTabCtrl klass