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
してください。
継承階層
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);
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示