Opis funkcji LoadImage (...)
wczytuje do pamięci bitmapę, ikonę, kursor, animowany kursor z określonych zasobów:
Public Declare Function LoadImage _ Lib "user32" Alias "LoadImageA" ( _ ByVal hInst As Long, _ ByVal lpszName As String, _ ByVal uType As Long, _ ByVal cxDesired As Long, _ ByVal cyDesired As Long, _ ByVal fuLoad As Long) As Long
- argumenty:
- hInst
- Uchwyt do instancji modułu, biblioteki DLL lub pliku wykonywalnego (exe), zawierającego obraz do załadowania. Aby załadować obraz OEM, lub obraz z zasobów dyskowych (ikonę, kursor, lub bitmapę) należy ustawić wartość tego argument na ZERO.
- lpszName
-
Uchwyt obrazu do załadowania. Jeśli argument hInst nie jest pusty, a argument fuLoad
nie zawiera stałej LR_LOADFROMFILE, lpszName jest wskaźnikiem do ciągu znaków, zakończonego znakiem
końca ciągu, zawierającego nazwę obrazu znajdującego się w zasobach hInst.
Jeżeli hInst jest równe ZERO i fuLoad nie zawiera stałej LR_LOADFROMFILE, to mniej znaczące słowo argumentu określa identyfikator obrazu OEM przeznaczonego do załadowania. Identyfikatory OEM obrazu są określone w pliku winuser.h i są poprzedzone następującymi prefiksami:
• OBM_ - bitmapa OEM
• OIC_ - ikona OEM
• OCR_ - kursor OEM
Jeśli argument fuLoad stałą LR_LOADFROMFILE, wartość lpszName jest pełną ścieżką dostępu do pliku zawierającego obraz. - uType
-
Określa typ obrazu do załadowania. Argument ten może przyjmować jedną z następujących wartości:
• IMAGE_BITMAP = 0 - załadowana powinna być bitmapa
• IMAGE_ICON = 1 - załadowana powinna być ikona
• IMAGE_CURSOR = 2 - załadowany powinien być kursor - cxDesired
- Określa szerokość ikony lub kursora w pikselach. Jeśli argument ten jest równy ZERO, a argument fuLoad zawiera stałą LR_DEFAULTSIZE, funkcja używa systemowych ustawień SM_CXICON lub SM_CXCURSOR, aby dostosować szerokość wczytywanego obrazu. Jeśli argument ten jest równy ZERO i fuLoad nie zawiera stałej LR_DEFAULTSIZE, obraz jest ładowany w oryginalnej szerokości.
- cyDesired
- Określa wysokość ikony lub kursora w pikselach. Jeśli argument ten jest równy ZERO, a argument fuLoad zawiera stałą LR_DEFAULTSIZE, funkcja używa systemowych ustawień SM_CYICON lub SM_CYCURSOR, aby dostosować wysokość wczytywanego obrazu. Jeśli argument ten jest równy ZERO i fuLoad nie zawiera stałej LR_DEFAULTSIZE, obraz jest ładowany w oryginalnej wysokości.
- fuLoad
-
Wartość argumentu jest kombinacją następujących stałych:
Wartość Opis LR_DEFAULTCOLOR = &H0 stała domyślna, praktycznie oznacza ona, że ładowany obraz nie będzie monochromatyczny (LR_MONOCHROME) LR_CREATEDIBSECTION = &H2000 jeżeli argument uType ma wartość IMAGE_BITMAP, funkcja zwraca sekcji DIB bitmapy, a nie kompatybilną bitmapą. Stała ta jest przydatna do ładowania bitmapy niezależnie od systemu kolorów kontekstu urządzenia wyświetlającego. LR_DEFAULTSIZE = &H40 jeśli argumenty cxDesired lub cyDesired są ustawione na zero funkcja używa wartości systemowych określających szerokość lub wysokość kursora lub ikony. Jeżeli stała ta nie jest ustawiona i argumentu cxDesired i cyDesired są przyjmują wartość zero, funkcja używa rzeczywistych rozmiarów podczas ładowania obrazów . Jeśli zasób zawiera więcej niż jeden obraz, funkcja używa rozmiaru pierwszego obrazu. LR_LOADFROMFILE = &H10 obraz zostanie załadowany z pliku do którego pełna ścieżka została przekazana w argumencie lpszName. Jeśli stała ta nie została określona, argument lpszName odnosi się do nazwy zasobu. LR_LOADMAP3DCOLORS = &H1000 zastępuje w tabeli kolorów obrazu poniższe odcienie szarości kolorem 3D:
Dk Gray RGB (128,128,128) zastępowany jest kolorem COLOR_3DSHADOW
Gray RGB (192,192,192) zastępowany jest kolorem COLOR_3DFACE
Lt Gray RGB(223,223,223) zastępowany jest kolorem COLOR_3DLIGHTLR_LOADTRANSPARENT = &H20 Pobiera wartość koloru pierwszego piksela obrazu i zastępuje go odpowiadającym mu wpisem z tablicy domyślnych kolorów (COLOR_WINDOW). Stała ta ma zastosowanie jedynie do obrazów, które mają odpowiednią tabelę kolorów. Jeśli argument fuLoad zawiera zarówno stałą LR_LOADTRANSPARENT i LR_LOADMAP3DCOLORS, to stała LRLOADTRANSPARENT ma większy priorytet, ale kolor zastępczy pobierany jest z tablicy COLOR_3DFACE, a nie COLOR_WINDOW. LR_MONOCHROME = &H1 obraz ładowany jest jako czarno-biały. LR_SHARED = &H80000 Gdy obraz jest ładowany wielokrotnie tworzy, wspólny uchwyt do załadowanego obrazu. Jeżeli LR_SHARED nie jest ustawiony, to funkcji LoadImage(...) będzie ładowała ten sam obraz ponownie, przez co zwróci inny uchwyt załadowanego obrazu. Nie należy stosować stałej LR_SHARED do obrazów, które mają nietypowe rozmiary i mogą się zmienić podczas ładowania obrazka oraz do obrazów ładowanych z pliku. LR_VGACOLOR = &H80 używany jest zestaw kolorów VGA true.
- zwraca:
-
Przy powodzeniu zwraca uchwyt załadowanego obrazu. Przy niepowodzeniu zwraca ZERO.
Kilka uwag o stosowaniu funkcji LoadImage(...).
Po zakończeniu korzystania z bitmapy, kursora lub ikony, należy zwolnić obraz z pamięci poprzez wywołanie:
- dla bitmapy - funkcji DeleteObject(...)
- dla kursora - funkcji DestroyCursor(...),
- dla ikony - funkcji DestroyIcon(...)
Gdy kończymy proces, który korzysta z tworzonych zasobów, system sam automatycznie usuwa załadowane do pamięci zasoby, jednak wywołanie odpowiedniej funkcji zwalniającej zasoby, oszczędza pamięć i zmniejsza rozmiar obszaru roboczego wykorzystywanego przez proces. Pozostawianie w pamięci niepotrzebnych obiektów może mieć niepożądany wpływ na inne uruchamiane procesy graficzne, a w skrajnym przypadku może doprowadzić do wyczerpania zasobów systemowych w wyniku tzw. „wycieków pamięci” (memory leak).