SimpleWindow
载入中...
搜索中...
未找到
sw::ImageList类 参考

Win32图像列表句柄的RAII包装 更多...

#include <ImageList.h>

Public 成员函数

 ImageList (int cx, int cy, UINT flags, int cInitial, int cGrow) noexcept
 创建图像列表,该函数调用ImageList_Create
 
 ImageList (const ImageList &other) noexcept
 拷贝构造图像列表对象
 
 ImageList (ImageList &&other) noexcept
 移动构造图像列表对象
 
 ~ImageList () noexcept
 析构图像列表对象
 
ImageListoperator= (const ImageList &other) noexcept
 拷贝赋值图像列表对象
 
ImageListoperator= (ImageList &&other) noexcept
 移动赋值图像列表对象
 
HIMAGELIST GetHandle () const noexcept
 获取图像列表句柄
 
bool IsWrap () const noexcept
 判断当前对象是否为包装对象
 
HIMAGELIST ReleaseHandle () noexcept
 获取图像列表句柄并取消对句柄的托管
 
int Add (HBITMAP hbmImage, HBITMAP hbmMask) noexcept
 添加图像,该函数调用ImageList_Add
 
int AddIcon (HICON hIcon) noexcept
 添加图标,该函数调用ImageList_AddIcon
 
int AddMasked (HBITMAP hbmImage, COLORREF crMask) noexcept
 添加图像,指定颜色为mask,该函数调用ImageList_AddMasked
 
bool BeginDrag (int iTrack, int dxHotspot, int dyHotspot) noexcept
 开始拖拽图像,该函数调用ImageList_BeginDrag
 
bool Draw (int i, HDC hdcDst, int x, int y, UINT fStyle) noexcept
 在指定上下文DC下绘制图像,该函数调用ImageList_Draw
 
bool Draw (int i, HDC hdcDst, int x, int y, int dx, int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle) noexcept
 在指定上下文DC下绘制图像,该函数调用ImageList_DrawEx
 
ImageList Duplicate () noexcept
 复制当前图像列表,该函数调用ImageList_Duplicate
 
COLORREF GetBkColor () noexcept
 获取背景颜色,该函数调用ImageList_GetBkColor
 
HICON GetIcon (int i, UINT flags) noexcept
 通过指定位置的图像创建图标句柄,该函数调用ImageList_GetIcon
 
bool GetIconSize (int &cx, int &cy) noexcept
 获取图标大小,该函数调用ImageList_GetIconSize
 
int GetImageCount () noexcept
 获取图像个数,该函数调用ImageList_GetImageCount
 
bool GetImageInfo (int i, IMAGEINFO *pImageInfo) noexcept
 获取图像信息,该函数调用ImageList_GetImageInfo
 
bool Remove (int i) noexcept
 移除指定图像,该函数调用ImageList_Remove
 
bool RemoveAll () noexcept
 移除所有图像,该函数调用ImageList_Remove
 
bool Replace (int i, HBITMAP hbmImage, HBITMAP hbmMask) noexcept
 更换指定位置的图像,该函数调用ImageList_Replace
 
int ReplaceIcon (int i, HICON hicon) noexcept
 更换图标,该函数调用ImageList_ReplaceIcon
 
COLORREF SetBkColor (COLORREF clrBk) noexcept
 设置背景颜色,该函数调用ImageList_SetBkColor
 
bool SetDragCursorImage (int iDrag, int dxHotspot, int dyHotspot) noexcept
 设置拖拽图标为指定图标与当前拖拽图标的结合,该函数调用ImageList_SetDragCursorImage
 
bool SetIconSize (int cx, int cy) noexcept
 设置图像大小并移除所有图像,该函数调用ImageList_SetIconSize
 
bool SetImageCount (UINT uNewCount) noexcept
 设置图像个数,该函数调用ImageList_SetImageCount
 
bool SetOverlayImage (int iImage, int iOverlay) noexcept
 将指定的图像添加到要用作覆盖遮罩的图像列表中,该函数调用ImageList_SetOverlayImage
 
bool Write (IStream *pstm) noexcept
 写图像列表,该函数调用ImageList_Write
 

静态 Public 成员函数

static ImageList Create (int cx, int cy, UINT flags, int cInitial, int cGrow) noexcept
 创建图像列表,该函数调用ImageList_Create
 
static ImageList Wrap (HIMAGELIST hImageList) noexcept
 将已有图像列表句柄包装为ImageList对象
 
static bool Copy (const ImageList &dst, int iDst, const ImageList &src, int iSrc, UINT uFlags) noexcept
 复制图像,该函数调用ImageList_Copy
 
static bool DragEnter (HWND hwndLock, int x, int y) noexcept
 锁定窗口并在指定窗口内显示拖拽图像,该函数调用ImageList_DragEnter
 
static bool DragLeave (HWND hwndLock) noexcept
 解除窗口锁定并隐藏显示的拖拽图像,该函数调用ImageList_DragLeave
 
static bool DragMove (int x, int y) noexcept
 拖拽移动,一般在WM_MOUSEMOVE函数中调用,该函数调用ImageList_DragMove
 
static bool DragShowNolock (bool fShow) noexcept
 拖拽时显示或隐藏图像,该函数调用ImageList_DragShowNolock
 
static void EndDrag () noexcept
 结束拖拽操作并销毁临时拖拽图像列表,该函数调用ImageList_EndDrag
 
static ImageList GetDragImage (POINT *ppt, POINT *pptHotspot) noexcept
 获取拖拽中的临时图像列表,该函数调用ImageList_GetDragImage
 
static ImageList LoadImageA (HINSTANCE hi, LPCSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags) noexcept
 加载图像列表,该函数调用ImageList_LoadImageA
 
static ImageList LoadImageW (HINSTANCE hi, LPCWSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags) noexcept
 加载图像列表,该函数调用ImageList_LoadImageW
 
static ImageList Merge (const ImageList &iml1, int i1, const ImageList &iml2, int i2, int dx, int dy) noexcept
 合并两个图像列表,该函数调用ImageList_Merge
 
static ImageList Read (IStream *pstm) noexcept
 读取图像列表,该函数调用ImageList_Read
 

Protected 成员函数

 ImageList (HIMAGELIST hImageList, bool isWrap) noexcept
 使用已有句柄初始化图像列表对象
 

详细描述

Win32图像列表句柄的RAII包装

注解
非包装对象在析构时会调用ImageList_Destroy;通过Wrap创建的包装对象不负责销毁句柄。

构造及析构函数说明

◆ ImageList() [1/4]

sw::ImageList::ImageList ( HIMAGELIST  hImageList,
bool  isWrap 
)
protectednoexcept

使用已有句柄初始化图像列表对象

参数
hImageList图像列表句柄
isWrap是否仅包装句柄,若为true则析构时不销毁句柄

◆ ImageList() [2/4]

sw::ImageList::ImageList ( int  cx,
int  cy,
UINT  flags,
int  cInitial,
int  cGrow 
)
noexcept

创建图像列表,该函数调用ImageList_Create

参数
cx每个图像的宽度,单位为像素
cy每个图像的高度,单位为像素
flags创建标志,与ImageList_Create的flags参数相同
cInitial图像列表的初始容量
cGrow容量不足时每次增长的图像数量

◆ ImageList() [3/4]

sw::ImageList::ImageList ( const ImageList other)
noexcept

拷贝构造图像列表对象

参数
other要拷贝的对象
注解
包装对象会共享原句柄;非包装对象会调用ImageList_Duplicate复制句柄。

◆ ImageList() [4/4]

sw::ImageList::ImageList ( ImageList &&  other)
noexcept

移动构造图像列表对象

参数
other要移动的对象,移动后其句柄被置空

◆ ~ImageList()

sw::ImageList::~ImageList ( )
noexcept

析构图像列表对象

注解
若当前对象不是包装对象且句柄有效,则调用ImageList_Destroy销毁句柄。

成员函数说明

◆ Add()

int sw::ImageList::Add ( HBITMAP  hbmImage,
HBITMAP  hbmMask 
)
noexcept

添加图像,该函数调用ImageList_Add

参数
hbmImage包含一个或多个图像的位图句柄
hbmMask包含掩码的位图句柄,可为NULL
返回
新增图像中第一个图像的索引,失败返回-1

◆ AddIcon()

int sw::ImageList::AddIcon ( HICON  hIcon)
noexcept

添加图标,该函数调用ImageList_AddIcon

参数
hIcon要添加的图标句柄
返回
新增图标的索引,失败返回-1

◆ AddMasked()

int sw::ImageList::AddMasked ( HBITMAP  hbmImage,
COLORREF  crMask 
)
noexcept

添加图像,指定颜色为mask,该函数调用ImageList_AddMasked

参数
hbmImage包含一个或多个图像的位图句柄
crMask用作透明掩码的颜色
返回
新增图像中第一个图像的索引,失败返回-1

◆ BeginDrag()

bool sw::ImageList::BeginDrag ( int  iTrack,
int  dxHotspot,
int  dyHotspot 
)
noexcept

开始拖拽图像,该函数调用ImageList_BeginDrag

参数
iTrack要拖拽的图像索引
dxHotspot拖拽热点相对图像左上角的水平偏移,单位为像素
dyHotspot拖拽热点相对图像左上角的垂直偏移,单位为像素
返回
操作成功返回true,否则返回false

◆ Copy()

static bool sw::ImageList::Copy ( const ImageList dst,
int  iDst,
const ImageList src,
int  iSrc,
UINT  uFlags 
)
staticnoexcept

复制图像,该函数调用ImageList_Copy

参数
dst目标图像列表
iDst目标图像索引
src源图像列表
iSrc源图像索引
uFlags复制方式标志,与ImageList_Copy的uFlags参数相同
返回
操作成功返回true,否则返回false

◆ Create()

static ImageList sw::ImageList::Create ( int  cx,
int  cy,
UINT  flags,
int  cInitial,
int  cGrow 
)
staticnoexcept

创建图像列表,该函数调用ImageList_Create

参数
cx每个图像的宽度,单位为像素
cy每个图像的高度,单位为像素
flags创建标志,与ImageList_Create的flags参数相同
cInitial图像列表的初始容量
cGrow容量不足时每次增长的图像数量
返回
拥有新图像列表句柄的对象,创建失败时句柄为NULL

◆ DragEnter()

static bool sw::ImageList::DragEnter ( HWND  hwndLock,
int  x,
int  y 
)
staticnoexcept

锁定窗口并在指定窗口内显示拖拽图像,该函数调用ImageList_DragEnter

参数
hwndLock要锁定更新的窗口句柄
x拖拽图像相对锁定窗口左上角的水平位置,单位为像素
y拖拽图像相对锁定窗口左上角的垂直位置,单位为像素
返回
操作成功返回true,否则返回false
注解
hwndLock为NULL时,坐标相对屏幕左上角。

◆ DragLeave()

static bool sw::ImageList::DragLeave ( HWND  hwndLock)
staticnoexcept

解除窗口锁定并隐藏显示的拖拽图像,该函数调用ImageList_DragLeave

参数
hwndLock先前传给DragEnter的窗口句柄
返回
操作成功返回true,否则返回false

◆ DragMove()

static bool sw::ImageList::DragMove ( int  x,
int  y 
)
staticnoexcept

拖拽移动,一般在WM_MOUSEMOVE函数中调用,该函数调用ImageList_DragMove

参数
x拖拽图像相对锁定窗口左上角的新水平位置,单位为像素
y拖拽图像相对锁定窗口左上角的新垂直位置,单位为像素
返回
操作成功返回true,否则返回false
注解
拖拽锁定窗口为NULL时,坐标相对屏幕左上角。

◆ DragShowNolock()

static bool sw::ImageList::DragShowNolock ( bool  fShow)
staticnoexcept

拖拽时显示或隐藏图像,该函数调用ImageList_DragShowNolock

参数
fShow为true时显示拖拽图像,为false时隐藏拖拽图像
返回
操作成功返回true,否则返回false

◆ Draw() [1/2]

bool sw::ImageList::Draw ( int  i,
HDC  hdcDst,
int  x,
int  y,
int  dx,
int  dy,
COLORREF  rgbBk,
COLORREF  rgbFg,
UINT  fStyle 
)
noexcept

在指定上下文DC下绘制图像,该函数调用ImageList_DrawEx

参数
i要绘制的图像索引
hdcDst目标设备上下文句柄
x绘制位置的水平坐标,单位为像素
y绘制位置的垂直坐标,单位为像素
dx绘制宽度,单位为像素
dy绘制高度,单位为像素
rgbBk背景颜色,与ImageList_DrawEx的rgbBk参数相同
rgbFg前景颜色,与ImageList_DrawEx的rgbFg参数相同
fStyle绘制样式标志,与ImageList_DrawEx的fStyle参数相同
返回
操作成功返回true,否则返回false

◆ Draw() [2/2]

bool sw::ImageList::Draw ( int  i,
HDC  hdcDst,
int  x,
int  y,
UINT  fStyle 
)
noexcept

在指定上下文DC下绘制图像,该函数调用ImageList_Draw

参数
i要绘制的图像索引
hdcDst目标设备上下文句柄
x绘制位置的水平坐标,单位为像素
y绘制位置的垂直坐标,单位为像素
fStyle绘制样式标志,与ImageList_Draw的fStyle参数相同
返回
操作成功返回true,否则返回false

◆ Duplicate()

ImageList sw::ImageList::Duplicate ( )
noexcept

复制当前图像列表,该函数调用ImageList_Duplicate

返回
拥有复制结果句柄的对象,复制失败时句柄为NULL

◆ GetBkColor()

COLORREF sw::ImageList::GetBkColor ( )
noexcept

获取背景颜色,该函数调用ImageList_GetBkColor

返回
当前背景颜色,返回值语义与ImageList_GetBkColor相同

◆ GetDragImage()

static ImageList sw::ImageList::GetDragImage ( POINT ppt,
POINT pptHotspot 
)
staticnoexcept

获取拖拽中的临时图像列表,该函数调用ImageList_GetDragImage

参数
ppt接收当前拖拽位置,可为NULL
pptHotspot接收拖拽图像热点相对拖拽位置的偏移,可为NULL
返回
包装临时图像列表句柄的对象;该句柄由拖拽过程管理,EndDrag后失效

◆ GetHandle()

HIMAGELIST sw::ImageList::GetHandle ( ) const
noexcept

获取图像列表句柄

返回
当前对象持有的HIMAGELIST句柄,所有权不转移

◆ GetIcon()

HICON sw::ImageList::GetIcon ( int  i,
UINT  flags 
)
noexcept

通过指定位置的图像创建图标句柄,该函数调用ImageList_GetIcon

参数
i图像索引
flags绘制样式标志,与ImageList_GetIcon的flags参数相同
返回
新创建的图标句柄,失败返回NULL;调用方负责在不再使用时销毁该图标

◆ GetIconSize()

bool sw::ImageList::GetIconSize ( int cx,
int cy 
)
noexcept

获取图标大小,该函数调用ImageList_GetIconSize

参数
cx接收图像宽度,单位为像素
cy接收图像高度,单位为像素
返回
操作成功返回true,否则返回false

◆ GetImageCount()

int sw::ImageList::GetImageCount ( )
noexcept

获取图像个数,该函数调用ImageList_GetImageCount

返回
图像列表中的图像数量

◆ GetImageInfo()

bool sw::ImageList::GetImageInfo ( int  i,
IMAGEINFO pImageInfo 
)
noexcept

获取图像信息,该函数调用ImageList_GetImageInfo

参数
i图像索引
pImageInfo接收图像信息的IMAGEINFO结构指针
返回
操作成功返回true,否则返回false

◆ IsWrap()

bool sw::ImageList::IsWrap ( ) const
noexcept

判断当前对象是否为包装对象

返回
当前对象仅包装句柄且析构时不销毁句柄则返回true,否则返回false

◆ LoadImageA()

static ImageList sw::ImageList::LoadImageA ( HINSTANCE  hi,
LPCSTR  lpbmp,
int  cx,
int  cGrow,
COLORREF  crMask,
UINT  uType,
UINT  uFlags 
)
staticnoexcept

加载图像列表,该函数调用ImageList_LoadImageA

参数
hi包含资源的模块实例句柄
lpbmp位图资源名、资源ID或文件路径
cx每个图像的宽度,单位为像素
cGrow容量不足时每次增长的图像数量
crMask用作透明掩码的颜色
uType图像类型,与LoadImage的uType参数相同
uFlags加载标志,与LoadImage的fuLoad参数相同
返回
拥有新图像列表句柄的对象,加载失败时句柄为NULL

◆ LoadImageW()

static ImageList sw::ImageList::LoadImageW ( HINSTANCE  hi,
LPCWSTR  lpbmp,
int  cx,
int  cGrow,
COLORREF  crMask,
UINT  uType,
UINT  uFlags 
)
staticnoexcept

加载图像列表,该函数调用ImageList_LoadImageW

参数
hi包含资源的模块实例句柄
lpbmp位图资源名、资源ID或文件路径
cx每个图像的宽度,单位为像素
cGrow容量不足时每次增长的图像数量
crMask用作透明掩码的颜色
uType图像类型,与LoadImage的uType参数相同
uFlags加载标志,与LoadImage的fuLoad参数相同
返回
拥有新图像列表句柄的对象,加载失败时句柄为NULL

◆ Merge()

static ImageList sw::ImageList::Merge ( const ImageList iml1,
int  i1,
const ImageList iml2,
int  i2,
int  dx,
int  dy 
)
staticnoexcept

合并两个图像列表,该函数调用ImageList_Merge

参数
iml1第一个图像列表
i1第一个图像列表中的图像索引
iml2第二个图像列表
i2第二个图像列表中的图像索引
dx第二个图像相对第一个图像的水平偏移,单位为像素
dy第二个图像相对第一个图像的垂直偏移,单位为像素
返回
拥有合并结果句柄的对象,合并失败时句柄为NULL

◆ operator=() [1/2]

ImageList & sw::ImageList::operator= ( const ImageList other)
noexcept

拷贝赋值图像列表对象

参数
other要拷贝的对象
返回
当前对象
注解
原有非包装句柄会先被销毁;包装对象会共享原句柄,非包装对象会复制句柄。

◆ operator=() [2/2]

ImageList & sw::ImageList::operator= ( ImageList &&  other)
noexcept

移动赋值图像列表对象

参数
other要移动的对象,移动后其句柄被置空
返回
当前对象

◆ Read()

static ImageList sw::ImageList::Read ( IStream pstm)
staticnoexcept

读取图像列表,该函数调用ImageList_Read

参数
pstm要读取的流对象
返回
拥有读取结果句柄的对象,读取失败时句柄为NULL

◆ ReleaseHandle()

HIMAGELIST sw::ImageList::ReleaseHandle ( )
noexcept

获取图像列表句柄并取消对句柄的托管

返回
原图像列表句柄,调用方负责在需要时销毁该句柄
注解
调用后当前对象的句柄被置空,析构时不会销毁原句柄。

◆ Remove()

bool sw::ImageList::Remove ( int  i)
noexcept

移除指定图像,该函数调用ImageList_Remove

参数
i要移除的图像索引,传入-1时移除所有图像
返回
操作成功返回true,否则返回false

◆ RemoveAll()

bool sw::ImageList::RemoveAll ( )
noexcept

移除所有图像,该函数调用ImageList_Remove

返回
操作成功返回true,否则返回false

◆ Replace()

bool sw::ImageList::Replace ( int  i,
HBITMAP  hbmImage,
HBITMAP  hbmMask 
)
noexcept

更换指定位置的图像,该函数调用ImageList_Replace

参数
i要更换的图像索引
hbmImage新图像位图句柄
hbmMask新掩码位图句柄,可为NULL
返回
操作成功返回true,否则返回false

◆ ReplaceIcon()

int sw::ImageList::ReplaceIcon ( int  i,
HICON  hicon 
)
noexcept

更换图标,该函数调用ImageList_ReplaceIcon

参数
i要更换的图像索引,传入-1时追加图标
hicon新图标句柄
返回
被更换或追加图标的索引,失败返回-1

◆ SetBkColor()

COLORREF sw::ImageList::SetBkColor ( COLORREF  clrBk)
noexcept

设置背景颜色,该函数调用ImageList_SetBkColor

参数
clrBk新背景颜色
返回
先前的背景颜色,返回值语义与ImageList_SetBkColor相同

◆ SetDragCursorImage()

bool sw::ImageList::SetDragCursorImage ( int  iDrag,
int  dxHotspot,
int  dyHotspot 
)
noexcept

设置拖拽图标为指定图标与当前拖拽图标的结合,该函数调用ImageList_SetDragCursorImage

参数
iDrag当前图像列表中要组合到拖拽图像上的图像索引
dxHotspot新图像相对拖拽热点的水平偏移,单位为像素
dyHotspot新图像相对拖拽热点的垂直偏移,单位为像素
返回
操作成功返回true,否则返回false

◆ SetIconSize()

bool sw::ImageList::SetIconSize ( int  cx,
int  cy 
)
noexcept

设置图像大小并移除所有图像,该函数调用ImageList_SetIconSize

参数
cx新图像宽度,单位为像素
cy新图像高度,单位为像素
返回
操作成功返回true,否则返回false

◆ SetImageCount()

bool sw::ImageList::SetImageCount ( UINT  uNewCount)
noexcept

设置图像个数,该函数调用ImageList_SetImageCount

参数
uNewCount新图像数量
返回
操作成功返回true,否则返回false

◆ SetOverlayImage()

bool sw::ImageList::SetOverlayImage ( int  iImage,
int  iOverlay 
)
noexcept

将指定的图像添加到要用作覆盖遮罩的图像列表中,该函数调用ImageList_SetOverlayImage

参数
iImage要用作覆盖图像的图像索引
iOverlay覆盖图像编号,用于INDEXTOOVERLAYMASK
返回
操作成功返回true,否则返回false

◆ Wrap()

static ImageList sw::ImageList::Wrap ( HIMAGELIST  hImageList)
staticnoexcept

将已有图像列表句柄包装为ImageList对象

参数
hImageList要包装的图像列表句柄
返回
包装原有句柄的对象,该对象析构时不会销毁句柄

◆ Write()

bool sw::ImageList::Write ( IStream pstm)
noexcept

写图像列表,该函数调用ImageList_Write

参数
pstm要写入的流对象
返回
操作成功返回true,否则返回false

该类的文档由以下文件生成: