Rubrik: Grafik & Zeichnen | 15.03.02 |
LoadImage-Funktion Diese Funktion lädt ein Icon, Bitmap, Cursor oder eine Enhanced Metadatei und gibt deren Handle zurück. | ||
Betriebssystem: Win95, Win98, WinNT 4.0, Win2000, WinME | Views: 13.743 |
Deklaration:
Declare Function LoadImage Lib "user32" _ Alias "LoadImageA" ( _ ByVal hInst As Long, _ ByVal lpsz As String, _ ByVal dwImageType As Long, _ ByVal dwDesiredWidth As Long, _ ByVal dwDesiredHeight As Long, _ ByVal dwFlags As Long) As Long
Beschreibung:
Diese Funktion lädt ein Icon, Bitmap, Cursor oder eine Enhanced Metadatei und gibt deren Handle zurück.
Parameter:
hinst | Erwartet das Instanzhandle der Anwendung die das Bildlädt. |
lpszName | Erwartet den Pfadnamen einer Datei, wenn das "LR_LOADFROMFILE-Flag in "dwFlags" gesetzt worden ist. Ist dieses Flag nicht festgelegt, muss hier ein Name einer Ressource angegeben werden, die das Bildobjekt beinhaltet |
uType | Erwartet eine der "uType"-Konstanten diefestlegen, welcher Art das Bildobjekt ist und welcher Art das zurückgegebene Handle sein soll. |
cxDesired | Erwartet die Breite des Bitmaps, das geladen werden soll. Wird nicht die Originalgröße angegeben, so wird das Bild gestreckt. Ist das "LR_DEFAULTSIZE"-Flag gesetzt, so wird die Standardgröße für Icons/Cursor gewählt und dieAngaben der Größe werden ignoriert, falls das zu ladende Objekt ein Icon/Cursor ist. Ist im System die Größe nicht definiert, so wird die Originalgröße desObjekts verwendet. |
cyDesired | Erwartet die Breite des Bitmaps, das geladen werden soll. Wird nicht die Originalgröße angegeben, so wird das Bild gestreckt. Ist das "LR_DEFAULTSIZE"-Flag gesetzt, so wird die Standardgröße für Icons/Cursor gewählt und dieAngaben der Größe werden ignoriert, falls das zu ladende Objekt ein Icon/Cursor ist. Ist im System die Größe nicht definiert, so wird die Originalgröße desObjekts verwendet. |
fuLoad | Erwartet eine oder eine Kombination mehrerer "fuLoad"-Konstanten, um die Art des Ladens festzulegen. |
uType Konstanten:
Const IMAGE_BITMAP = 0 ' gibt ein Handle zu einem Bitmap zurück Const IMAGE_ICON = 1 ' gibt ein Handle zu einem Icon zurück Const IMAGE_CURSOR = 2 ' gibt ein Handle zu einem Cursor zurück Const IMAGE_ENHMETAFILE = 3 ' gibt ein Handle zu einer Enhanced Metadatei zurück
Rückgabewert:
Ist die Funktion erfolgreich, so wird das Handle des geladenen Objekts zurückgegeben, andernfalls ist die Rückgabe "0".
Beispiel:
Private Declare Function GetClassLong Lib "user32.dll" _ Alias "GetClassLongA" ( _ ByVal hWnd As Long, _ ByVal nIndex As Long) As Long Private Declare Function SetClassLong Lib "user32.dll" _ Alias "SetClassLongA" ( _ ByVal hWnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Private Declare Function GetClassName Lib "user32.dll" _ Alias "GetClassNameA" ( _ ByVal hWnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Private Declare Function CallWindowProc Lib "user32.dll" _ Alias "CallWindowProcA" ( _ ByVal lpPrevWndFunc As Long, _ ByVal hWnd As Long, _ ByVal Msg As Long, _ ByVal WParam As Long, _ ByVal lParam As Long) As Long Private Declare Function LoadImage Lib "user32" _ Alias "LoadImageA" ( _ ByVal hInst As Long, _ ByVal lpsz As String, _ ByVal dwImageType As Long, _ ByVal dwDesiredWidth As Long, _ ByVal dwDesiredHeight As Long, _ ByVal dwFlags As Long) As Long ' Get/Set-Class nIndex-Konstanten Private Const GCL_CBCLSEXTRA = -20 ' ermittelt die Größe des Extraspeichers der Klasse Private Const GCL_CBWNDEXTRA = -18 ' ermittelt die Größe des Extraspeichers des Fensters Private Const GCL_HBRBACKGROUND = -10 ' ermittelt das Handle des Brushs der Klasse Private Const GCL_HCURSOR = -12 ' ermittelt das Handle des Cursors der Klasse Private Const GCL_HICON = -14 ' ermittelt das Handle des Icons der Klasse Private Const GCL_HMODULE = -16 ' ermittelt das Handle des Moduls der Klasse Private Const GCL_MENUNAME = -8 ' ermittelt den Menünamen der Klasse Private Const GCL_STYLE = -26 ' ermittelt den Fensterstyle der Klasse Private Const GCL_WNDPROC = -24 ' ermittelt die Prozeduradresse der Klasse ' LoadImage dwImageType-Konstanten Private Const IMAGE_BITMAP = 0 ' gibt ein Handle zu einem Bitmap zurück Private Const IMAGE_ICON = 1 ' gibt ein Handle zu einem Icon zurück Private Const IMAGE_CURSOR = 2 ' gibt ein Handle zu einem Cursor zurück Private Const IMAGE_ENHMETAFILE = 3 ' gibt ein Handle zu einer Enhanced Metadatei zurück ' LoadImage dwFlags-Konstanten Private Const LR_CREATEDIBSECTION = &H2000 ' lädt ein Bitmap mit Dib-Sektionen Private Const LR_DEFAULTCOLOR = &H0 ' lädt das Bild in den Standardfarben (Not ' LR_MONOCHROME) Private Const LR_DEFAULTSIZE = &H40 ' lädt das Bild in der Standardgröße des Bildes Private Const LR_LOADFROMFILE = &H10 ' lädt das Bild von einer Datei Private Const LR_LOADMAP3DCOLORS = &H1000 ' ersetzt bestimmte Grautöne eines Bildes ' mit den Systemfarben für 3D-Ramen die normalerweise den Grautönen zugeordnet sind Private Const LR_LOADTRANSPARENT = &H20 ' ersetzt alle Pixel des Bildes mit dem ' Farbwert des ersten Pixels des Bitmaps durch die Standard-Fensterhintergrundfarbe Private Const LR_MONOCHROME = &H1 ' lädt das Bild in schwarzweiß Private Const LR_SHARED = &H8000 ' diese Option erzwingt, dass bei mehrmaligem ' Aufruf der Funktion jedes Mal das gleiche Handle zurückgegeben wird und ' das Bild nicht erneut geladen wird Private Const LR_COPYFROMRESOURCE = &H4000 ' lädt das Bild aus einer Ressource ' eine der Fensternachrichten Private Const WM_CLOSE = &H10 ' schließt das Fenster Private hIcon As Long
' der Fensterklasse unserer Form ein anderes Icon zuweisen Private Sub Form_Load() Dim Retval As Long Dim Buffer As String * 256 ' Klassennamen ermitteln Retval = GetClassName(Me.hWnd, Buffer, Len(Buffer)) If Retval = 0 Then MsgBox "Der Klassenname konnte nicht ermittelt werden" Else MsgBox "Der Klassenname dieses Fensters ist """ & Left$(Buffer, Retval) & """" End If ' Icon laden hIcon = LoadImage(App.hInstance, App.Path & "\Misc01.ico", IMAGE_ICON, 16&, _ 16&, LR_LOADFROMFILE) If hIcon = 0 Then MsgBox "Fehler beim Laden des Icons" Exit Sub End If ' Icon der Klasse zuweisen (das Fenster zeigt darauf keinerlei Reaktionen, ' man müsste zu diesem Zweck selbst ein Fenster dieser Klasse mit Hilfe ' der CreateWindowEx-Funktion erstellen) Retval = SetClassLong(Me.hWnd, GCL_HICON, hIcon) If Retval = 0 Then MsgBox "Das Icon konnte nicht zugewiesen werden" End If End Sub
' Form schließen einmal anders Private Sub Command1_Click() Dim ProcAddress As Long ' Prozedur-Adresse unserer Form bekommen ProcAddress = GetClassLong(Form1.hWnd, GCL_WNDPROC) If ProcAddress = 0 Then MsgBox "Die Prozeduradresse der Fensterklasse konnte nicht ermittelt werden." End End If ' unserer Form die Schließen-Nachricht zusenden CallWindowProc ProcAddress, Me.hWnd, WM_CLOSE, 0&, 0& End Sub