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
の使用方法の詳細については、「ControlsとCImageList
の使用」を参照してください。
継承階層
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
作成するコピー操作の種類を指定するビット フラグ値。 このパラメーターには、次の 値のいずれかを指定できます。
値 | 意味 |
---|---|
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 つだけを含めることができます。
値 | 意味 |
---|---|
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 つ以上を指定できます。
値 | 意味 |
---|---|
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
イメージを描画する 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 値または次のいずれかの値を指定できます。
値 | 意味 |
---|---|
CLR_DEFAULT |
既定の背景色。 イメージは、イメージ リストの背景色を使用して描画されます。 |
CLR_NONE |
背景色なし。 イメージは透過的に描画されます。 |
rgbFore
イメージの前景色 (既定では CLR_DEFAULT
)。 このパラメーターには、アプリケーション定義の RGB 値または次のいずれかの値を指定できます。
値 | 意味 |
---|---|
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);