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 オーバーレイ マスクとして使用するイメージの一覧に、イメージの 0 から始まるインデックスを追加します。
CImageList::Write イメージ リストをアーカイブに書き込みます。

パブリック演算子

名前 説明
CImageList::operator HIMAGELIST HIMAGELISTに添付されている値を返しますCImageList

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

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

解説

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

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

使用の詳細については、「コントロールと使用CImageList」を参照CImageListしてください

継承階層

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
作成するイメージ リストの種類を指定します。 このパラメーターには、次の値の組み合わせを指定できますが、含めることができる値は 1 つだけ ILC_COLOR です。

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自動的に呼び出され、 DeleteTempMap FromHandle によって作成されたすべての一時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 を返します。

解説

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

ある場合 pWndLock 、この関数は NULLデスクトップ ウィンドウに関連付けられた表示コンテキストでイメージを描画し、座標は画面の左上隅を基準にして相対的になります。

この関数は、ドラッグ操作中に特定のウィンドウに対する他のすべての更新をロックします。 ドラッグ アンド ドロップ操作のターゲットを強調表示するなど、ドラッグ操作中に描画を実行する必要がある場合は、この関数を使用してドラッグした画像を 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_BLEND50, ILD_SELECTED, ILD_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_DrawEx関する情報を参照dxしてくださいdy

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

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

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

戻り値

正常終了した場合は 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
POINTイメージが描画される x 座標と y 座標を含む構造体。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

戻り値

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

解説

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

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

解説

a 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 つのインデックスをリストに追加できます。

オーバーレイ マスクは、別のイメージの上に透過的に描画されるイメージです。 マクロを使用して指定されたオーバーレイ マスクの CImageList::Draw 1 から始まるインデックスを持つメンバー関数を使用して、イメージ上にオーバーレイ マスクを 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 以外を返します。それ以外の場合は 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 クラス