SimpleWindow
载入中...
搜索中...
未找到
ImageList.h
1#pragma once
2
3#include "Dip.h"
4#include <CommCtrl.h>
5
6namespace sw
7{
12 {
13 private:
17 HIMAGELIST _hImageList;
18
22 bool _isWrap;
23
24 protected:
30 ImageList(HIMAGELIST hImageList, bool isWrap);
31
32 public:
36 ImageList(int cx, int cy, UINT flags, int cInitial, int cGrow);
37
41 ImageList(const ImageList &other);
42
47
51 virtual ~ImageList();
52
57
62
67 static ImageList Create(int cx, int cy, UINT flags, int cInitial, int cGrow);
68
74 static ImageList Wrap(HIMAGELIST hImageList);
75
79 static bool Copy(const ImageList &dst, int iDst, const ImageList &src, int iSrc, UINT uFlags);
80
84 static bool DragEnter(HWND hwndLock, double x, double y);
85
90 static bool DragEnterPx(HWND hwndLock, int x, int y);
91
95 static bool DragLeave(HWND hwndLock);
96
100 static bool DragMove(double x, double y);
101
106 static bool DragMovePx(int x, int y);
107
111 static bool DragShowNolock(bool fShow);
112
116 static void EndDrag();
117
121 static ImageList GetDragImage(POINT *ppt, POINT *pptHotspot);
122
126 static ImageList LoadImageA(HINSTANCE hi, LPCSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags);
127
131 static ImageList LoadImageW(HINSTANCE hi, LPCWSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags);
132
136 static ImageList Merge(const ImageList &iml1, int i1, const ImageList &iml2, int i2, int dx, int dy);
137
141 static ImageList Read(IStream *pstm);
142
143 public:
147 HIMAGELIST GetHandle() const;
148
152 bool IsWrap() const;
153
158 HIMAGELIST ReleaseHandle();
159
163 int Add(HBITMAP hbmImage, HBITMAP hbmMask);
164
168 int AddIcon(HICON hIcon);
169
173 int AddMasked(HBITMAP hbmImage, COLORREF crMask);
174
178 bool BeginDrag(int iTrack, int dxHotspot, int dyHotspot);
179
183 bool Draw(int i, HDC hdcDst, double x, double y, UINT fStyle);
184
188 bool Draw(int i, HDC hdcDst, double x, double y, double dx, double dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle);
189
193 bool DrawPx(int i, HDC hdcDst, int x, int y, UINT fStyle);
194
198 bool DrawPx(int i, HDC hdcDst, int x, int y, int dx, int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle);
199
204
208 COLORREF GetBkColor();
209
213 HICON GetIcon(int i, UINT flags);
214
218 bool GetIconSize(int &cx, int &cy);
219
224
228 bool GetImageInfo(int i, IMAGEINFO *pImageInfo);
229
233 bool Remove(int i);
234
238 bool RemoveAll();
239
243 bool Replace(int i, HBITMAP hbmImage, HBITMAP hbmMask);
244
248 int ReplaceIcon(int i, HICON hicon);
249
253 COLORREF SetBkColor(COLORREF clrBk);
254
258 bool SetDragCursorImage(int iDrag, int dxHotspot, int dyHotspot);
259
263 bool SetIconSize(int cx, int cy);
264
268 bool SetImageCount(UINT uNewCount);
269
273 bool SetOverlayImage(int iImage, int iOverlay);
274
278 bool Write(IStream *pstm);
279
280 private:
284 void _DestroyIfNotWrap();
285 };
286}
图像列表
Definition ImageList.h:12
static ImageList Wrap(HIMAGELIST hImageList)
包装一个图像列表句柄为ImageList对象,通过该函数创建的对象析构时不会销毁句柄
bool GetIconSize(int &cx, int &cy)
获取图标大小,该函数调用ImageList_GetIconSize
bool IsWrap() const
判断当前对象是否为包装对象
int Add(HBITMAP hbmImage, HBITMAP hbmMask)
添加图像,该函数调用ImageList_Add
bool SetDragCursorImage(int iDrag, int dxHotspot, int dyHotspot)
设置拖拽图标为指定图标与当前拖拽图标的结合,该函数调用ImageList_SetDragCursorImage
static ImageList LoadImageW(HINSTANCE hi, LPCWSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags)
加载图像列表,该函数调用ImageList_LoadImageW
bool BeginDrag(int iTrack, int dxHotspot, int dyHotspot)
开始拖拽图像,该函数调用ImageList_BeginDrag
HIMAGELIST GetHandle() const
获取图像列表的句柄
int AddMasked(HBITMAP hbmImage, COLORREF crMask)
添加图像,指定颜色为mask,该函数调用ImageList_AddMasked
int ReplaceIcon(int i, HICON hicon)
更换图标,该函数调用ImageList_ReplaceIcon
HIMAGELIST ReleaseHandle()
获取图像列表句柄并取消对句柄的托管,调用该函数后当前对象将不可用,析构时也不会销毁句柄
bool Remove(int i)
移除指定图像,该函数调用ImageList_Remove
ImageList(const ImageList &other)
拷贝构造
static bool Copy(const ImageList &dst, int iDst, const ImageList &src, int iSrc, UINT uFlags)
复制图像,该函数调用ImageList_Copy
static ImageList LoadImageA(HINSTANCE hi, LPCSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags)
加载图像列表,该函数调用ImageList_LoadImageA
bool Draw(int i, HDC hdcDst, double x, double y, UINT fStyle)
在指定上下文DC下绘制图像,该函数调用ImageList_Draw
static bool DragEnterPx(HWND hwndLock, int x, int y)
锁定窗口并在指定窗口内显示拖拽图像,该函数调用ImageList_DragEnter
bool RemoveAll()
移除所有图像,该函数调用ImageList_Remove
ImageList Duplicate()
复制当前图像列表,该函数调用ImageList_Duplicate
static ImageList GetDragImage(POINT *ppt, POINT *pptHotspot)
获取拖拽中图像的列表,该函数调用ImageList_GetDragImage
static bool DragEnter(HWND hwndLock, double x, double y)
锁定窗口并在指定窗口内显示拖拽图像,该函数调用ImageList_DragEnter
static void EndDrag()
结束拖拽,该函数调用ImageList_EndDrag
bool SetIconSize(int cx, int cy)
设置图像大小并移除所有图像,该函数调用ImageList_SetIconSize
HICON GetIcon(int i, UINT flags)
通过指定位置的图像创建图标句柄,该函数调用ImageList_GetIcon
bool DrawPx(int i, HDC hdcDst, int x, int y, int dx, int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle)
以像素为单位,在指定上下文DC下绘制图像,该函数调用ImageList_DrawEx
static ImageList Create(int cx, int cy, UINT flags, int cInitial, int cGrow)
创建一个图像列表,该函数调用ImageList_Create
ImageList & operator=(ImageList &&other)
移动赋值
bool SetImageCount(UINT uNewCount)
设置图像个数,该函数调用ImageList_SetImageCount
COLORREF SetBkColor(COLORREF clrBk)
设置背景颜色,该函数调用ImageList_SetBkColor
COLORREF GetBkColor()
获取背景颜色,该函数调用ImageList_GetBkColor
ImageList(int cx, int cy, UINT flags, int cInitial, int cGrow)
创建图像列表,参数与ImageList_Create相同
bool Write(IStream *pstm)
写图像列表,该函数调用ImageList_Write
bool Replace(int i, HBITMAP hbmImage, HBITMAP hbmMask)
更换指定位置的图像,该函数调用ImageList_Replace
static bool DragShowNolock(bool fShow)
拖拽时显示或隐藏图像,该函数调用ImageList_DragShowNolock
bool Draw(int i, HDC hdcDst, double x, double y, double dx, double dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle)
在指定上下文DC下绘制图像,该函数调用ImageList_DrawEx
bool SetOverlayImage(int iImage, int iOverlay)
将指定的图像添加到要用作覆盖遮罩的图像列表中,该函数调用ImageList_SetOverlayImage
ImageList & operator=(const ImageList &other)
拷贝赋值
virtual ~ImageList()
析构函数
static bool DragMovePx(int x, int y)
拖拽移动,一般在WM_MOUSEMOVE函数中调用,该函数调用ImageList_DragMove
bool GetImageInfo(int i, IMAGEINFO *pImageInfo)
获取图像信息,该函数调用ImageList_GetImageInfo
static ImageList Read(IStream *pstm)
读取图像列表,该函数调用ImageList_Read
static bool DragLeave(HWND hwndLock)
解除窗口锁定并隐藏显示的拖拽图像,该函数调用ImageList_DragLeave
static bool DragMove(double x, double y)
拖拽移动,一般在WM_MOUSEMOVE函数中调用,该函数调用ImageList_DragMove
static ImageList Merge(const ImageList &iml1, int i1, const ImageList &iml2, int i2, int dx, int dy)
合并两个图像列表,该函数调用ImageList_Merge
ImageList(HIMAGELIST hImageList, bool isWrap)
初始化图像列表
int AddIcon(HICON hIcon)
添加图标,该函数调用ImageList_AddIcon
int GetImageCount()
获取图像个数,该函数调用ImageList_GetImageCount
bool DrawPx(int i, HDC hdcDst, int x, int y, UINT fStyle)
以像素为单位,在指定上下文DC下绘制图像,该函数调用ImageList_Draw
ImageList(ImageList &&other)
移动构造