copyImage 函数 (winuser.h)

(图标、光标或位图) 创建新图像,并将指定图像的属性复制到新图像。 如有必要,函数会拉伸位以适应新图像的所需大小。

语法

HANDLE CopyImage(
  [in] HANDLE h,
  [in] UINT   type,
  [in] int    cx,
  [in] int    cy,
  [in] UINT   flags
);

参数

[in] h

类型: 句柄

要复制的图像的句柄。

[in] type

类型: UINT

要复制的图像的类型。 此参数的取值可为下列值之一:

含义
IMAGE_BITMAP
0
复制位图。
IMAGE_CURSOR
2
复制游标。
IMAGE_ICON
1
复制图标。

[in] cx

类型: int

图像的所需宽度(以像素为单位)。 如果为零,则返回的图像的宽度将与原始 hImage 相同。

[in] cy

类型: int

图像的所需高度(以像素为单位)。 如果为零,则返回的图像的高度将与原始 hImage 相同。

[in] flags

类型: UINT

此参数可使用以下一个或多个值。

含义
LR_COPYDELETEORG
0x00000008
创建副本后删除原始映像。
LR_COPYFROMRESOURCE
0x00004000
尝试从原始资源文件重新加载图标或游标资源,而不只是复制当前图像。 当资源文件包含资源的多个大小时,这对于创建不同大小的副本很有用。 如果没有此标志, CopyImage 会将原始图像拉伸到新大小。 如果设置了此标志, CopyImage 将使用资源文件中最接近所需大小的大小。 仅当 hImageLoadIconLoadCursor 加载,或者由 LoadImage 加载LR_SHARED标志时,此操作才会成功。
LR_COPYRETURNORG
0x00000004
如果原始 hImage 满足复制条件(即正确的尺寸和颜色深度),则返回原始 hImage ,在这种情况下, 将忽略LR_COPYDELETEORG 标志。 如果未指定此标志,则始终创建一个新对象。
LR_CREATEDIBSECTION
0x00002000
如果已设置此设置并创建新的位图,则会将位图创建为 DIB 部分。 否则,位图图像将创建为依赖于设备的位图。 仅当IMAGE_BITMAP uType 时,此标志才有效。
LR_DEFAULTCOLOR
0x00000000
使用默认颜色格式。
LR_DEFAULTSIZE
0x00000040
如果 cxDesiredcyDesired 值设置为零,则使用游标或图标的系统指标值指定的宽度或高度。 如果未指定此标志,并且 cxDesiredcyDesired 设置为零,则函数将使用实际资源大小。 如果资源包含多个图像,则 函数使用第一个图像的大小。
LR_MONOCHROME
0x00000001
创建新的单色图像。

返回值

类型: 句柄

如果函数成功,则返回值是新创建的映像的句柄。

如果函数失败,则返回值为 NULL。 要获得更多的错误信息,请调用 GetLastError。

注解

使用完资源后,可以通过调用下表中的函数之一释放其关联的内存。

资源 释放函数
Bitmap DeleteObject
游标 DestroyCursor
图标 DestroyIcon
 

系统在其进程终止时自动删除资源,但是,调用相应的函数会节省内存并减小进程的工作集的大小。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll
API 集 Windows 10版本 10.0.1 (0240 中引入的 ext-ms-win-ntuser-gui-l1-3-0)

请参阅

概念性

LoadImage

引用

资源