次の方法で共有


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 FromHandleによって作成された一時的なCImageList オブジェクトを削除するために、CWinAppアイドル時間ハンドラーによって呼び出されます。
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 オーバーレイ マスクとして使用するイメージの一覧に、イメージの 0 から始まるインデックスを追加します。
CImageList::Write イメージ リストをアーカイブに書き込みます。

パブリック演算子

名前 説明
CImageList::operator HIMAGELIST CImageListにアタッチされているHIMAGELISTを返します。

パブリック データ メンバー

名前 説明
CImageList::m_hImageList このオブジェクトにアタッチされているイメージ リストを含むハンドル。

解説

"image list" は同じサイズのイメージのコレクションであり、それぞれが 0 から始まるインデックスで参照できます。 イメージ リストは、アイコンまたはビットマップの大規模なセットを効率的に管理するために使用されます。 イメージ リスト内のすべての画像は、画面デバイス形式の 1 つのワイド ビットマップに含まれています。 イメージ リストには、画像を透過的に描画する (アイコンのスタイル) ために使用されるマスクを含むモノクロビット マップを含めることもできます。 Microsoft Win32 アプリケーション プログラミング インターフェイス (API) には、イメージの描画、イメージ リストの作成と破棄、イメージの追加と削除、イメージの置換、イメージのマージ、イメージのドラッグを行う画像リスト関数が用意されています。

このコントロール (したがって、 CImageList クラス) は、Windows 95/98 および Windows NT バージョン 3.51 以降で実行されているプログラムでのみ使用できます。

CImageListの使用方法の詳細については、「ControlsCImageListの使用」を参照してください。

継承階層

CObject

CImageList

要件

ヘッダー: afxcmn.h

CImageList::Add

この関数を呼び出して、1 つ以上の画像またはアイコンを画像リストに追加します。

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

int Add(
    CBitmap* pbmImage,
    COLORREF crMask);

int Add(HICON hIcon);

パラメーター

pbmImage
イメージまたはイメージを含むビットマップへのポインター。 イメージの数は、ビットマップの幅から推論されます。

pbmMask
マスクを含むビットマップへのポインター。 イメージ リストでマスクが使用されていない場合、このパラメーターは無視されます。

crMask
マスクの生成に使用される色。 指定されたビットマップ内のこの色の各ピクセルが黒に変更され、マスク内の対応するビットが 1 に設定されます。

hIcon
新しいイメージのビットマップとマスクを含むアイコンのハンドル。

戻り値

成功した場合の最初の新しいイメージの 0 から始まるインデックス。それ以外の場合 - 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 以外。それ以外の場合は 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
ドラッグするイメージの 0 から始まるインデックス。

ptHotSpot
開始ドラッグ位置の座標 (通常はカーソル位置)。 座標は、画像の左上隅を基準にしています。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 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

このメンバー関数では、Windows SDK で説明されているように、Win32 関数 ImageList_Copy の動作が実装されます。

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

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

パラメーター

iDst
コピー操作のコピー先として使用するイメージの 0 から始まるインデックス。

iSrc
コピー操作のソースとして使用するイメージの 0 から始まるインデックス。

uFlags
作成するコピー操作の種類を指定するビット フラグ値。 このパラメーターには、次の 値のいずれかを指定できます。

Value 意味
ILCF_MOVE コピー元イメージは、コピー先イメージのインデックスにコピーされます。 この操作により、特定のイメージの複数のインスタンスが生成されます。 ILCF_MOVE は既定値です。
ILCF_SWAP ソース イメージとコピー先イメージは、イメージ リスト内の位置を交換します。

pSrc
コピー操作のターゲットである CImageList オブジェクトへのポインター。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 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 値の 1 つだけを含めることができます。

Value 意味
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 マスクを使用します。 イメージ リストには 2 つのビットマップが含まれています。そのうちの 1 つはマスクとして使用されるモノクロ ビットマップです。 この値が含まれていない場合、イメージ リストにはビットマップが 1 つだけ含まれます。 マスクされたイメージの詳細については、「 イメージ リストからのイメージの描画 」を参照してください。

nInitial
イメージ リストに最初に含まれるイメージの数。

nGrow
新しいイメージ用の領域を作るために、システムがリストのサイズを変更する必要があるときに、イメージ リストを拡大できる画像の数。 このパラメーターは、サイズ変更されたイメージ リストに含めることができる新しいイメージの数を表します。

nBitmapID
イメージ リストに関連付けるビットマップのリソース ID。

crMask
マスクの生成に使用される色。 指定されたビットマップ内のこの色の各ピクセルが黒に変更され、マスク内の対応するビットが 1 に設定されます。

lpszBitmapID
イメージのリソース ID を含む文字列。

imagelist1
CImageList オブジェクトへの参照です。

nImage1
最初の既存のイメージのインデックス。

imagelist2
CImageList オブジェクトへの参照です。

nImage2
2 番目の既存のイメージのインデックス。

dx
第 1 の画像との関係にある 2 番目の画像の x 軸のオフセット (ピクセル単位)。

dy
第 1 の画像との関係における第 2 の画像の y 軸のオフセット (ピクセル単位)。

pImageList
CImageList オブジェクトを指すポインターです。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

2 つの手順で CImageList を構築します。 まず、コンストラクターを呼び出し、 Createを呼び出します。これにより、イメージ リストが作成され、 CImageList オブジェクトにアタッチされます。

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

CImageList::DeleteImageList

イメージ リストを削除するには、この関数を呼び出します。

BOOL DeleteImageList();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

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

CImageList::DeleteTempMap

CWinAppアイドル時間ハンドラーによって自動的に呼び出DeleteTempMapFromHandle によって作成された一時的なCImageList オブジェクトが削除されますが、ImageList オブジェクトに一時的に関連付けられているハンドル (hImageList) は破棄されません。

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 以外を返します。それ以外の場合は 0 を返します。

解説

座標はウィンドウの左上隅を基準としているため、座標を指定するときは、境界線、タイトル バー、メニュー バーなどのウィンドウ要素の幅を補正する必要があります。

pWndLockNULLの場合、この関数はデスクトップ ウィンドウに関連付けられた表示コンテキストに画像を描画し、座標は画面の左上隅を基準にして描画されます。

この関数は、ドラッグ操作中に特定のウィンドウに対する他のすべての更新をロックします。 ドラッグ アンド ドロップ操作のターゲットを強調表示するなど、ドラッグ操作中に描画を実行する必要がある場合は、 CImageList::DragLeave 関数を使用してドラッグしたイメージを一時的に非表示にすることができます。

CImageList::BeginDrag の例を参照してください。

CImageList::DragLeave

pWndLockで指定されたウィンドウのロックを解除し、ドラッグイメージを非表示にして、ウィンドウを更新できるようにします。

static BOOL PASCAL DragLeave(CWnd* pWndLock);

パラメーター

pWndLock
ドラッグ画像を所有するウィンドウへのポインター。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CImageList::EndDrag の例を参照してください。

CImageList::DragMove

ドラッグ アンド ドロップ操作中にドラッグされているイメージを移動するには、この関数を呼び出します。

static BOOL PASCAL DragMove(CPoint pt);

パラメーター

pt
新しいドラッグ位置。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 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 以外を返します。それ以外の場合は 0 を返します。

解説

CImageList::DragEnter関数は、ドラッグ操作中にウィンドウに対するすべての更新をロックします。 ただし、この関数はウィンドウをロックしません。

CImageList::Draw

ドラッグ アンド ドロップ操作中にドラッグされているイメージを描画するには、この関数を呼び出します。

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

パラメーター

pDC
宛先デバイス コンテキストへのポインター。

nImage
描画するイメージの 0 から始まるインデックス。

pt
指定したデバイス コンテキスト内で描画する位置。

nStyle
描画スタイルを指定するフラグ。 次の値の 1 つ以上を指定できます。

Value 意味
ILD_BLEND25, ILD_FOCUS イメージを描画し、システムの強調表示の色を 25% ブレンドします。 イメージ リストにマスクが含まれていない場合、この値は無効です。
ILD_BLEND50ILD_SELECTEDILD_BLEND イメージを描画し、システムの強調表示の色を 50% ブレンドします。 イメージ リストにマスクが含まれていない場合、この値は無効です。
ILD_MASK マスクを描画します。
ILD_NORMAL イメージ リストの背景色を使用してイメージを描画します。 背景色が CLR_NONE 値の場合、イメージはマスクを使用して透過的に描画されます。
ILD_TRANSPARENT 背景色に関係なく、マスクを使用してイメージを透過的に描画します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CImageList::SetOverlayImage の例を参照してください。

CImageList::DrawEx

指定したデバイス コンテキストでイメージ リスト アイテムを描画します。

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

パラメーター

pDC
宛先デバイス コンテキストへのポインター。

nImage
描画するイメージの 0 から始まるインデックス。

pt
指定したデバイス コンテキスト内で描画する位置。

sz
画像の左上隅を基準にして描画する画像の部分のサイズ。 Windows SDK のImageList_DrawExdxdyを参照してください。

clrBk
イメージの背景色。 Windows SDK のImageList_DrawExrgbBkを参照してください。

clrFg
イメージの前景色。 Windows SDK のImageList_DrawExrgbFgを参照してください。

nStyle
描画スタイルを指定するフラグ。 Windows SDK のImageList_DrawExfStyleを参照してください。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 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
描画するイメージの 0 から始まるインデックス。

pt
イメージを描画する x 座標と y 座標を含む POINT 構造体。

sz
描画するイメージのサイズを示す SIZE 構造体。

ptOrigin
画像自体に対する描画操作の左上隅を指定する x 座標と y 座標を含む POINT 構造体。 x 座標の左側と y 座標の上にあるイメージのピクセルは描画されません。

fStyle
描画スタイルと、必要に応じてオーバーレイ イメージを指定するフラグ。 オーバーレイ画像の詳細については、「解説」セクションを参照してください。 MFC の既定の実装 ILD_NORMAL、イメージ リストの背景色を使用してイメージを描画します。 背景色が CLR_NONE 値の場合、イメージはマスクを使用して透過的に描画されます。

その他の可能なスタイルは、IMAGELISTDRAWPARAMS構造体のfStyle メンバーの下で説明します。

dwRop
ラスター演算コードを指定する値。 これらのコードは、変換元の四角形の色データとターゲットの四角形の色データを組み合わせて最終的な色を実現する方法を定義します。 MFC の既定の実装 SRCCOPY、コピー元の四角形をコピー先の四角形に直接コピーします。 fStyle パラメーターに ILD_ROP フラグが含まれていない場合、このパラメーターは無視されます。

その他の使用可能な値は、IMAGELISTDRAWPARAMS構造体のdwRop メンバーの下に記述されます。

rgbBack
既定では、イメージの背景色 CLR_DEFAULT。 このパラメーターには、アプリケーション定義の RGB 値または次のいずれかの値を指定できます。

Value 意味
CLR_DEFAULT 既定の背景色。 イメージは、イメージ リストの背景色を使用して描画されます。
CLR_NONE 背景色なし。 イメージは透過的に描画されます。

rgbFore
イメージの前景色 (既定では CLR_DEFAULT)。 このパラメーターには、アプリケーション定義の RGB 値または次のいずれかの値を指定できます。

Value 意味
CLR_DEFAULT 既定の前景色。 イメージは、システムの強調表示の色を前景色として使用して描画されます。
CLR_NONE ブレンド色なし。 イメージは、ターゲット デバイス コンテキストの色とブレンドされます。

このパラメーターは、ILD_BLEND25またはILD_BLEND50 フラグfStyle含まれている場合にのみ使用されます。

fState
描画状態を指定するフラグ。 このメンバーには、1 つ以上のイメージ リスト状態フラグを含めることができます。

Frame
飽和効果とアルファ ブレンド効果の動作に影響します。

ILS_SATURATEと共に使用すると、このメンバーは、アイコン内の各ピクセルの RGB トリプレットの各カラー コンポーネントに追加される値を保持します。

ILS_APLHAと共に使用すると、このメンバーはアルファ チャネルの値を保持します。 この値は 0 から 255 までで、0 は完全に透明で、255 は完全に不透明です。

crEffect
光彩と影の効果に使用される COLORREF 値。

戻り値

TRUE 画像が正常に描画された場合。それ以外の場合は FALSE

解説

Win32 構造体を自分で埋める場合は、最初のバージョンを使用します。 1 つ以上の MFC の既定の引数を利用する場合、または構造体の管理を回避する場合は、2 番目のバージョンを使用します。

オーバーレイ イメージは、 nImage パラメーターによってこのメンバー関数で指定されたプライマリ イメージの上に描画されるイメージです。 INDEXTOOVERLAYMASK マクロを使用して指定されたオーバーレイ マスクの 1 から始まるインデックスを持つ Draw メンバー関数を使用して、オーバーレイ マスクを描画します。

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
イメージの 0 から始まるインデックス。

戻り値

成功した場合のアイコンのハンドル。それ以外の場合は 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;

戻り値

CImageList オブジェクトの背景色の RGB 色の値。

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
イメージの 0 から始まるインデックス。

pImageInfo
イメージに関する情報を受け取る IMAGEINFO 構造体へのポインター。 この構造体の情報を使用して、イメージのビットマップを直接操作できます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 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 以外を返します。それ以外の場合は 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 から始まるインデックス。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

nImageに続くすべての項目が 1 つ下の位置に移動するようになりました。 たとえば、画像リストに 2 つの項目が含まれている場合、最初の項目を削除すると、残りの項目が最初の位置になります。 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
置き換えるイメージの 0 から始まるインデックス。

pbmImage
イメージを含むビットマップへのポインター。

pbmMask
マスクを含むビットマップへのポインター。 イメージ リストでマスクが使用されていない場合、このパラメーターは無視されます。

hIcon
新しいイメージのビットマップとマスクを含むアイコンのハンドル。

戻り値

BOOLを返すバージョンは、成功した場合は 0 以外の値を返し、それ以外の場合は 0 を返します。

intを返すバージョンでは、成功した場合はイメージの 0 から始まるインデックスが返されます。それ以外の場合は 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 以外を返します。それ以外の場合は 0 を返します。

解説

ドラッグ関数はドラッグ操作中に新しいイメージを使用するため、Windows ShowCursor 関数を使用して、 CImageList::SetDragCursorImageを呼び出した後、実際のマウス カーソルを非表示にする必要があります。 そうしないと、ドラッグ操作中に、マウス カーソルが 2 つあるように見えてしまいます。

CImageList::SetImageCount

このメンバー関数を呼び出して、 CImageList オブジェクト内のイメージの数をリセットします。

BOOL SetImageCount(UINT uNewCount);

パラメーター

uNewCount
イメージ リスト内の新しいイメージの合計数を指定する値。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 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

オーバーレイ マスクとして使用するイメージの一覧にイメージの 0 から始まるインデックスを追加するには、この関数を呼び出します。

BOOL SetOverlayImage(
    int nImage,
    int nOverlay);

パラメーター

nImage
オーバーレイ マスクとして使用するイメージの 0 から始まるインデックス。

nOverlay
オーバーレイ マスクの 1 から始まるインデックス。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

最大 4 つのインデックスをリストに追加できます。

オーバーレイ マスクは、別のイメージの上に透過的に描画されるイメージです。 INDEXTOOVERLAYMASK マクロを使用して指定されたオーバーレイ マスクの 1 から始まるインデックスを持つ CImageList::Draw メンバー関数を使用して、イメージ上にオーバーレイ マスクを描画します。

// 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 以外を返します。それ以外の場合は 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 クラス