Declare Function CopyImage Lib "user32" (ByVal handle As Long, _ ByVal imageType As Long, _ ByVal newWidth As Long, _ ByVal newHeight As Long, _ ByVal lFlags As Long) As Long
CopyImage создает новое изображение (значок, курсор или картинку) и копирует атрибуты заданного изображения в новое изображение. В случае необходимости, функция растягивает биты картинки в заданные размеры нового изображения.
В успешном случае возвращается описатель нового созданного изображения. В случае ошибки возвращается 0 (Для получения кода ошибки используйте GetLastError.
IMAGE_BITMAP = 0 | Растровая картинка |
IMAGE_CURSOR | Курсор |
IMAGE_ICON | Значок |
LR_COPYDELETEORG | После создания копии его оригинал удаляется |
LR_COPYFROMRESOURCE | Попытка повторной загрузки значка или курсора из оригинального файла ресурсов вместо обычного копирования изображения. Полезно при создании копий разных размеров, если файл ресурсов содержит рисунок нескольких размеров. Без этого флага CopyImage растягивает оригинал до новых размеров. При установке данного флага CopyImage использует размер в ресурсе, наиболее близкий к устанавливаемым размерам. Применяется при использовании hImage, который загружается через LoadIcon, LoadCursor или LoadImage с флагом LR_SHARED |
LR_COPYRETURNORG = &H4 | Returns the original hImage if it satisfies the criteria for the copy—that is, correct dimensions and color depth—in which case the LR_COPYDELETEORG flag is ignored. If this flag is not specified, a new object is always created |
LR_CREATEDIBSECTION | If this is set and a new bitmap is created, the bitmap is created as a DIB section. Otherwise, the bitmap image is created as a device-dependent bitmap. This flag is only valid if uType is IMAGE_BITMAP |
LR_MONOCHROME = &H1 | Создает новый монохромный рисунок |
При завершении использования ресурса можно освободить занимаемую им память с помощью следующих функций
Ресурс | Выгружающая функция |
---|---|
Изображение | DeleteObject |
Курсор | DestroyCursor |
Значок | DestroyIcon |
Система автоматически выгружает эти ресурсы при завершении загрузившего их процесса, однако, использование указанных функций экономит память и адресное пространство процесса.
Смотри пример clipboard.zip