Share via


CopyImage 函式 (winuser.h)

建立新的影像 (圖示、游標或點陣圖) ,並將指定影像的屬性複製到新的影像。 如有必要,函式會延展位以符合新影像所需的大小。

語法

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

參數

[in] h

類型: HANDLE

要複製之映像的句柄。

[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 會使用最接近所需大小的資源檔大小。 只有當 hImage 已由 LoadIconLoadCursor 載入,或使用 LR_SHARED 旗標載入 LoadImage 時,才會成功。
LR_COPYRETURNORG
0x00000004
如果符合複本的準則,即正確的維度和色彩深度,則會傳回原始 hImage ,在此情況下會忽略 LR_COPYDELETEORG 旗標。 如果未指定此旗標,一律會建立新的物件。
LR_CREATEDIBSECTION
0x00002000
如果已設定並建立新的點陣圖,則會將點陣圖建立為 DIB 區段。 否則,會建立位圖影像做為裝置相依點圖。 只有當 uType是IMAGE_BITMAP時,此旗標才有效。
LR_DEFAULTCOLOR
0x00000000
使用預設色彩格式。
LR_DEFAULTSIZE
0x00000040
如果 cxDesiredcyDesired 值設定為零,則會使用系統計量值所指定的寬度或高度。 如果未指定此旗標,且 cxDesiredcyDesired 設定為零,函式會使用實際的資源大小。 如果資源包含多個影像,函式會使用第一個影像的大小。
LR_MONOCHROME
0x00000001
建立新的單色映像。

傳回值

類型: HANDLE

如果函式成功,則傳回值是新建立映像的句柄。

如果函式失敗,則傳回值為 NULL。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

當您完成使用資源時,您可以呼叫下表中的其中一個函式來釋放其相關聯的記憶體。

資源 Release 函式
點陣圖 DeleteObject
資料指標 DestroyCursor
圖示 DestroyIcon
 

不過,系統會在進程終止時自動刪除資源,不過呼叫適當的函式會儲存記憶體,並減少進程的工作集大小。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 winuser.h (包括 Windows.h)
程式庫 User32.lib
Dll User32.dll
API 集合 ext-ms-win-ntuser-gui-l1-3-0 (於 Windows 10 10.0.10240 版)

另請參閱

概念

LoadImage

參考

資源