Win32 API:ImageList_Duplicate 函数(Commctrl.h)
ImageList_Duplicate 函数是 Win32 API 中的一个函数,用于创建一个图像列表的副本。该函数的目的是复制一个已存在的图像列表,使得你可以在程序中使用相同的图像集合而不改变原始图像列表。以下是 ImageList_Duplicate 函数的一般格式:HIMAGELIST ImageList_Duplicate( HIMAGELIST himl);该函数接受一个图像列表的句柄 himl 作为参数,并返回一个新的图像列表句柄,该句柄指向与原始图像列表相同的图像集合。使用这个函数的一个典型场景是,如果你想在不同的窗口或控件中使用相同的图像集,而不希望每次都重新加载相同的图像,你可以使用 ImageList_Duplicate 创建一个副本,然后在不同的地方使用这个副本。要使用 ImageList_Duplicate 函数,你需要包含头文件 Commctrl.h 并链接到 Comctl32.lib 库。示例代码:#include <Commctrl.h>// 创建一个图像列表HIMAGELIST hOriginalImageList = ImageList_...
Win32 API:ImageList_DrawIndirect 函数(Commctrl.h)
ImageList_DrawIndirect 函数是 Win32 API 中的一个函数,它用于在图像列表中绘制图像。该函数通常用于绘制图标或小图像。以下是该函数的一般格式:BOOL ImageList_DrawIndirect( IMAGELISTDRAWPARAMS *pimldp);其中,IMAGELISTDRAWPARAMS 结构体定义如下:typedef struct _IMAGELISTDRAWPARAMS { DWORD cbSize; HIMAGELIST himl; int i; HDC hdcDst; int x; int y; int cx; int cy; int xBitmap; int yBitmap; COLORREF rgbBk; COLORREF rgbFg; UINT fStyle; DWORD dwRop; DWORD fState; DWORD Frame; COLORRE...
Win32 API:ImageList_DrawEx 函数(Commctrl.h)
ImageList_DrawEx 是 Win32 API 中用于在指定位置绘制图像列表中的图像的扩展函数,该函数在 Commctrl.h 头文件中声明。以下是 ImageList_DrawEx 函数的基本信息:BOOL ImageList_DrawEx( HIMAGELIST himl, int i, HDC hdcDst, int x, int y, int dx, int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle);参数说明: himl:源图像列表的句柄。 i:要绘制的图像的索引。 hdcDst:目标设备上下文的句柄,表示图像将被绘制到哪个设备上下文中。 x:目标位置的 x 坐标。 y:目标位置的 y 坐标。 dx:绘制的宽度。 dy:绘制的高度。 rgbBk:背景颜色。 rgbFg:前景颜色。 fStyle:图像的绘制样式,可以是以下值的组合: - ILD_BLEND25:使用 25% 的 alpha ...
Win32 API:ImageList_Draw 函数(Commctrl.h)
ImageList_Draw 是 Win32 API 中用于在指定位置绘制图像列表中的图像的函数,该函数在 Commctrl.h 头文件中声明。以下是 ImageList_Draw 函数的基本信息:BOOL ImageList_Draw( HIMAGELIST himl, int i, HDC hdcDst, int x, int y, UINT fStyle);参数说明: himl:源图像列表的句柄。 i:要绘制的图像的索引。 hdcDst:目标设备上下文的句柄,表示图像将被绘制到哪个设备上下文中。 x:目标位置的 x 坐标。 y:目标位置的 y 坐标。 fStyle:图像的绘制样式,可以是以下值的组合: - ILD_BLEND25:使用 25% 的 alpha 混合效果。 - ILD_BLEND50:使用 50% 的 alpha 混合效果。 - ILD_BLEND:使用默认的 alpha 混合效果。 - ILD_FOCUS:在图像周围绘制焦点矩形。 - ILD_MASK:绘制图像的遮罩而不是彩...
Win32 API:ImageList_DragShowNolock 函数(Commctrl.h)
ImageList_DragShowNolock 是 Win32 API 中用于在图像列表的拖放操作中显示或隐藏拖放图像的函数,该函数在 Commctrl.h 头文件中声明。以下是 ImageList_DragShowNolock 函数的基本信息:BOOL ImageList_DragShowNolock( BOOL fShow);参数说明: fShow:如果为 TRUE,则显示拖放图像;如果为 FALSE,则隐藏拖放图像。该函数返回一个 BOOL 类型的值,如果成功,返回值为非零;如果失败,返回值为零。在拖放操作中,ImageList_DragShowNolock 函数通常与 ImageList_DragEnter、ImageList_DragLeave 和 ImageList_DragMove 一起使用,以实现图像的拖放。以下是一个简单的示例代码,演示如何使用 ImageList_DragShowNolock 函数:#include <windows.h>#include <commctrl.h>LRESULT CALLBACK WndProc(HWND ...
Win32 API:ImageList_DragMove 函数(Commctrl.h)
ImageList_DragMove 是 Win32 API 中用于在图像列表的拖放操作中移动拖放的图像的函数,该函数在 Commctrl.h 头文件中声明。以下是 ImageList_DragMove 函数的基本信息:BOOL ImageList_DragMove( int x, int y);参数说明: x:以屏幕坐标表示的拖放操作的新位置的 x 坐标。 y:以屏幕坐标表示的拖放操作的新位置的 y 坐标。该函数返回一个 BOOL 类型的值,如果成功,返回值为非零;如果失败,返回值为零。在拖放操作中,ImageList_DragMove 函数通常与 ImageList_DragEnter 和 ImageList_DragLeave 一起使用,以实现图像的拖放。以下是一个简单的示例代码,演示如何使用 ImageList_DragMove 函数:#include <windows.h>#include <commctrl.h>LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPA...
Win32 API:ImageList_DragLeave 函数(Commctrl.h)
ImageList_DragLeave 是 Win32 API 中用于在图像列表的拖放操作中标记离开拖放目标的函数,该函数在 Commctrl.h 头文件中声明。以下是 ImageList_DragLeave 函数的基本信息:BOOL ImageList_DragLeave( HWND hwndLock);参数说明: hwndLock:在拖放期间,将在指定窗口的客户区内锁定鼠标。该函数返回一个 BOOL 类型的值,如果成功,返回值为非零;如果失败,返回值为零。在拖放操作中,ImageList_DragLeave 函数通常与 ImageList_DragEnter 和 ImageList_DragMove 一起使用,以实现图像的拖放。以下是一个简单的示例代码,演示如何使用 ImageList_DragLeave 函数:#include <windows.h>#include <commctrl.h>LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { ...
Win32 API:ImageList_DragEnter 函数(Commctrl.h)
ImageList_DragEnter 函数是 Win32 API 中用于在图像列表的拖放操作中标记拖放的起始点的函数,该函数在 Commctrl.h 头文件中声明。以下是 ImageList_DragEnter 函数的基本信息:BOOL ImageList_DragEnter( HWND hwndLock, int x, int y);参数说明: hwndLock:在拖放期间,将在指定窗口的客户区内锁定鼠标。 x:以屏幕坐标表示的拖放操作的起始点的 x 坐标。 y:以屏幕坐标表示的拖放操作的起始点的 y 坐标。该函数返回一个 BOOL 类型的值,如果成功,返回值为非零;如果失败,返回值为零。在拖放操作中,ImageList_DragEnter 函数通常与 ImageList_DragMove 和 ImageList_DragLeave 一起使用,以实现图像的拖放。以下是一个简单的示例代码,演示如何使用 ImageList_DragEnter 函数:#include <windows.h>#include <commctrl.h...
Win32 API:ImageList_Destroy 函数(Commctrl.h)
ImageList_Destroy 是 Win32 API 中用于销毁图像列表的函数,该函数在 Commctrl.h 头文件中声明。以下是 ImageList_Destroy 函数的基本信息:BOOL ImageList_Destroy( HIMAGELIST himl);参数说明: himl:要销毁的图像列表的句柄。该函数返回一个 BOOL 类型的值,如果成功,返回值为非零;如果失败,返回值为零。使用 ImageList_Destroy 函数可以释放由 ImageList_Create 函数创建的图像列表所占用的资源。在不再需要图像列表时,应该调用此函数来避免内存泄漏。以下是一个简单的示例代码,演示如何使用 ImageList_Destroy 函数:#include <windows.h>#include <commctrl.h>int main() { // 初始化 Common Controls INITCOMMONCONTROLSEX icex; icex.dwSize = sizeof(INITCOMMONCONTROLSEX); ...
Win32 API:ImageList_Create 函数(Commctrl.h)
ImageList_Create 是 Win32 API 中用于创建图像列表的函数,该函数在 Commctrl.h 头文件中声明。以下是 ImageList_Create 函数的基本信息:HIMAGELIST ImageList_Create( int cx, int cy, UINT flags, int cInitial, int cGrow);参数说明: cx:图像的宽度。 cy:图像的高度。 flags:图像列表的标志,可以是以下值的组合: - ILC_COLOR:指定图像列表使用一个颜色。 - ILC_COLOR4:指定图像列表使用 4 位色深。 - ILC_COLOR8:指定图像列表使用 8 位色深。 - ILC_COLOR16:指定图像列表使用 16 位色深。 - ILC_COLOR24:指定图像列表使用 24 位色深。 - ILC_COLOR32:指定图像列表使用 32 位色深。 - ILC_MASK:指定图像列表使用遮罩。 - ILC_MIRROR:对图像列表使用水平镜像。 - 等等,具体请参...
Win32 API:ImageList_BeginDrag 函数(Commctrl.h)
ImageList_BeginDrag 是 Win32 API 中用于开始图像列表拖放操作的函数,该函数在 Commctrl.h 头文件中声明。以下是 ImageList_BeginDrag 函数的基本信息:BOOL ImageList_BeginDrag( HIMAGELIST himlTrack, int iTrack, int dxHotspot, int dyHotspot);参数说明: himlTrack:源图像列表的句柄。 iTrack:拖动的图像在图像列表中的索引。 dxHotspot:拖动时光标的水平偏移。 dyHotspot:拖动时光标的垂直偏移。该函数返回一个 BOOL 类型的值,表示操作是否成功。如果成功,返回值为非零;如果失败,返回值为零。ImageList_BeginDrag 函数用于启动图像列表的拖放操作。在调用这个函数之后,可以使用 ImageList_DragMove 和 ImageList_DragShowNolock 等函数来处理拖放操作。通常,与拖放相关的操作需要在拖放的消息处理函数中进行。以下是一...
Win32 API:ImageList_AddMasked 函数(Commctrl.h)
ImageList_AddMasked 是 Win32 API 中用于将图像添加到图像列表的函数之一。这个函数在 Commctrl.h 头文件中声明。以下是 ImageList_AddMasked 函数的基本信息:int ImageList_AddMasked( HIMAGELIST himl, HBITMAP hbmImage, COLORREF crMask);参数说明: himl:图像列表的句柄。 hbmImage:包含图像的位图句柄。 crMask:指定在图像中表示透明部分的颜色。该函数返回一个整数值,表示添加的图像的索引。如果失败,返回值为-1。下面是一个简单的示例代码,演示如何使用 ImageList_AddMasked 函数:#include <windows.h>#include <commctrl.h>int main() { // 初始化 Common Controls INITCOMMONCONTROLSEX icex; icex.dwSize = sizeof(INITCOMMONCONTROLSEX);...
Win32 API:ImageList_AddIcon 函数(Commctrl.h)
ImageList_AddIcon 函数是 Win32 API 中用于将图标添加到图像列表的函数。这个函数在 Commctrl.h 头文件中声明。以下是 ImageList_AddIcon 函数的基本信息:int ImageList_AddIcon( HIMAGELIST himl, HICON hIcon);参数说明: himl:图像列表的句柄。 hIcon:要添加的图标的句柄。该函数返回一个整数值,表示添加的图像的索引。如果失败,返回值为-1。下面是一个简单的示例代码,演示如何使用 ImageList_AddIcon 函数:#include <windows.h>#include <commctrl.h>int main() { // 初始化 Common Controls INITCOMMONCONTROLSEX icex; icex.dwSize = sizeof(INITCOMMONCONTROLSEX); icex.dwICC = ICC_WIN95_CLASSES; // 或其他需要的标志 InitCom...
Win32 API:Header_SetUnicodeFormat 函数(Commctrl.h)
Header_SetUnicodeFormat 函数是用于设置报头控件(Header Control)的 Unicode 格式的函数。该函数在 Commctrl.h 头文件中声明。以下是 Header_SetUnicodeFormat 函数的基本信息:BOOL Header_SetUnicodeFormat( HWND hwnd, BOOL fUnicode);参数说明: hwnd:报头控件的句柄。 fUnicode:如果为 TRUE,则报头控件使用 Unicode 格式;如果为 FALSE,则使用 ANSI 格式。该函数返回一个 BOOL 类型的值,如果成功,返回值为非零;如果失败,返回值为零。Unicode 格式和 ANSI 格式的区别在于字符编码方式。Unicode 使用 16 位或 32 位编码表示字符,而 ANSI 使用 8 位编码。在 Windows 中,通常建议使用 Unicode 格式,特别是在开发国际化应用程序时,因为它能够更好地支持各种语言和字符集。以下是一个简单的示例代码,演示如何使用 Header_SetUnicodeFormat 函数:#include &...
Win32 API:Header_SetStateImageList 函数(Commctrl.h)
Header_SetStateImageList 函数是用于在报头控件(Header Control)中设置状态图像列表的函数。该函数在 Commctrl.h 头文件中声明。以下是 Header_SetStateImageList 函数的基本信息:HIMAGELIST Header_SetStateImageList( HWND hwnd, HIMAGELIST himl);参数说明: hwnd:报头控件的句柄。 himl:要设置的状态图像列表的句柄。该函数返回先前与报头控件关联的状态图像列表的句柄。如果之前没有关联状态图像列表,则返回 NULL。状态图像列表是一个包含图像的列表,通常用于显示项的状态图标,例如复选框的选中状态。在报头控件中,状态图像列表可以用于显示各个项的状态图标。以下是一个简单的示例代码,演示如何使用 Header_SetStateImageList 函数:#include <windows.h>#include <commctrl.h>int main() { // 初始化 Common Controls INIT...
Win32 API:Header_SetOrderArray 函数(Commctrl.h)
Header_SetOrderArray 函数用于设置报头控件(Header Control)中的项的显示顺序。这个函数在 Commctrl.h 头文件中声明。以下是 Header_SetOrderArray 函数的基本信息:BOOL Header_SetOrderArray( HWND hwnd, int iCount, LPINT lpi);参数说明: hwnd:报头控件的句柄。 iCount:指定数组中的项数。 lpi:指向一个整数数组的指针,其中包含报头控件项的索引。这些索引表示项的新显示顺序。该函数返回一个 BOOL 类型的值,如果成功,返回值为非零;如果失败,返回值为零。请注意,该函数用于设置报头控件中项的显示顺序,可以通过调用 Header_GetOrderArray 函数来获取当前的项顺序。这个函数的使用通常涉及到获取当前的项顺序,修改它,然后通过调用 Header_SetOrderArray 函数来设置新的顺序。以下是一个简单的示例代码,演示如何使用 Header_SetOrderArray 函数:#include <windows.h>#incl...
Win32 API:Header_SetItem 函数(Commctrl.h)
在 Win32 API 中,Header_SetItem 函数用于设置报头控件(Header Control)中的项的属性。这个函数在 Commctrl.h 头文件中声明。以下是 Header_SetItem 函数的基本信息:int Header_SetItem( HWND hwndHD, int iItem, const HD_ITEM *pitem);参数说明: hwndHD:报头控件的句柄。 iItem:要设置的项的索引。 pitem:指向 HD_ITEM 结构的指针,其中包含有关要设置的项的信息。HD_ITEM 结构定义如下:typedef struct { UINT mask; int cxy; LPWSTR pszText; HBITMAP hbm; int cchTextMax; int fmt; LPARAM lParam;#if (_WIN32_IE >= 0x0500) int iImage; int iOrder;#endif#if (_WIN32...
Win32 API:Header_SetImageList 函数(Commctrl.h)
Header_SetImageList 函数用于设置标题栏控件(Header control)中的图像列表。该函数在 Commctrl.h 头文件中声明。以下是该函数的声明:HIMAGELIST Header_SetImageList( HWND hwndHdr, HIMAGELIST himl);参数说明: hwndHdr:标题栏控件的句柄。 himl:要设置的图像列表的句柄。如果为 NULL,则表示移除当前的图像列表。函数返回值是之前与标题栏相关联的图像列表的句柄。如果没有与标题栏相关联的图像列表,则返回 NULL。使用该函数可以为标题栏中的每个项关联一个图像,以便在标题上显示图标。以下是一个简单的示例代码,演示如何使用 Header_SetImageList 函数:#include <Commctrl.h>// 初始化 CommCtrl 库// 创建标题栏控件HWND hwndHeader = CreateWindowEx(0, WC_HEADER, L"Header Control", WS_CHILD | WS_VISIBLE,...
Win32 API:Header_SetHotDivider 函数(Commctrl.h)
在Win32 API中,Header_SetHotDivider 函数用于设置标题栏控件(Header control)中的热点分隔条(hot divider)。该函数在 Commctrl.h 头文件中声明。以下是该函数的声明:BOOL Header_SetHotDivider( HWND hwndHD, BOOL fPos, int iPos);参数说明: hwndHD:标题栏控件的句柄。 fPos:一个布尔值,指定是否将 iPos 参数用作新的热点分隔条位置。如果为 TRUE,表示使用 iPos;如果为 FALSE,表示使用当前的鼠标位置。 iPos:新的热点分隔条位置。只有在 fPos 为 TRUE 时才使用此参数。函数返回值为 BOOL 类型,表示操作是否成功。如果成功,返回 TRUE;否则返回 FALSE。请注意,要使用该函数,你需要在代码中包含 <Commctrl.h> 头文件,并链接到 Comctl32.lib 库。下面是一个简单的示例代码,演示如何使用 Header_SetHotDivider 函数:#include <Commctrl.h&g...
Win32 API:Header_OrderToIndex 函数(Commctrl.h)
Header_OrderToIndex 函数用于将当前的显示顺序中的列索引转换为实际的列索引。在用户通过拖放列头来调整列的显示顺序时,你可能需要使用这个函数来获取实际的列索引。以下是 Header_OrderToIndex 函数的基本信息:int Header_OrderToIndex( HWND hwnd, int iOrder);参数说明: hwnd: 列表头控件的句柄。 iOrder: 列的当前显示顺序中的索引。返回值: 返回实际列的索引。如果失败,返回 -1。使用示例:#include <Commctrl.h>// ...HWND hwndHeader = // 获取列表头的句柄int orderIndex = // 当前显示顺序中的列索引int actualIndex = Header_OrderToIndex(hwndHeader, orderIndex);if (actualIndex != -1) { // 成功获取实际列索引 wprintf(L"Order index %d corresponds to actual index...