Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Cursor, Bitmap oder Icon in Speicher laden und Handle zurückgeben
Die Funktion LoadImage lädt einen Cursor, ein Icon oder ein Bitmap in den Speicher und gibt dessen Handle zurück.
Parameter:
L1(Param.1 Longint ) - Hier steht das Instanz-Handle des Moduls, aus dem das Bild geladen werden soll.
Kann 0 sein, wenn das Bild aus einer Datei geladen wird und in Parameter 6 $10 vorhanden ist.
L2(Param.2 Longint ) - Wenn $10 definiert wude, steht hier die Adresse eines Strings, der den Dateinamen des Bildes
enthält.
Wenn $10 nicht definiert wurde und in L1(Param.1 Longint ) ein Instanz-Handle definiert wurde,
steht hier die Adresse eines Strings, der den Namen des Bildes in der Datei enthält.
Wenn $10 nicht definiert wurde und in L1(Param.1 Longint ) kein Instanz-Handle definiert wurde,
steht in den unteren zwei Byte (Word) der Identifier des OEM Images, das geladen werden soll.
I3(Param.3 Integer ) - Hier steht ein Flag für den Typ des Images, das geladen werden sollWert
Bedeutung :
$0 = Bitmap
$1 = Icon
$2 = Cursor
I4(Param.4 Integer ) - Hier steht die gewünschte Breite des Bildes in Pixeln als Integer.
I5(Param.5 Integer ) - Hier steht die gewünschte Höhe des Bildes in Pixeln als Integer.
I6(Param.6 Integer ) - Flags die bestimmen, wie das Bild geladen werden soll. Flags können mit | addiert werdenWert Bedeutung
$0 = Lädt das Bild farbig.
$1 = Lädt das Bild nicht farbig.
$10 = Lädt ein Bild aus einer Bilddatei.
$20 = Nimmt den Farbwert des ersten Pixels des Bildes und ersetzt alle Pixel mit diesem Farbwert durch die Hintergrundfarbe des Fensters.
$40 = Lädt das Bild unter Verwendung der System Standardgrößen.
$80 = Streckt das Bild nicht mit Parameter 4 und 5.
$1000 = Ersetzt bestimmte Grauwerte durch Systemfarben.
Folgende Flags gibt’s nicht unter WindowsNTFlag
Bedeutung :
$1 = Lädt das Bild nicht farbig.
$40 = Lädt das Bild unter Verwendung der System Standardgrößen.
$10 = Lädt ein Bild aus einer Bilddatei.
$1000 = Ersetzt bestimmte Grauwerte durch Systemfarben.
$20 = Nimmt den Farbwert des ersten Pixels des Bildes und ersetzt alle Pixel mit diesem Farbwert durch die Hintergrundfarbe des Fensters.
Def Getsyscolor(1) !USER32,GetSysColor
Def @Loadimage(6) !USER32,LoadImageA
Settruecolor 1
Declare Ende%, X1%, Y1%, Sicher%, Bild&
Declare Hscroll1%, Hwstatus&, Hwstatus2&, Bild$
Declare Vscroll1%, Hwscrollrech%, Vscrollrech%
Proc Bildladen
Parameters Bild$, X%, Y%, Hw&
Declare Wfb#, Bild&, H&
Dim Wfb#, Add(Len(Bild$),1)
String Wfb#,0 = Bild$
Let H& = Loadimage(0,Wfb#,0, X%,Y%,$50)
Bild& = Control(STATIC,, $05000010E,0,0, X%,Y%,Hw&,2001,%Hinstance)
@Sendmessage(Bild&,$172,0,H&)
Dispose Wfb#
Return Bild&
Endproc
Proc Laden
Parameters Bild$
Mloadbmp Bild$ Nur um die X und Y Werte zu ermitteln!
X1% = %Bmpx
Y1% = %Bmpy
Destroywindow(Bild&)
Bildladen Bild$, X1%, Y1%, Hwstatus&
Bild& = @&(0)
Hwstatus2& = @&(0)
Setscrollrange Hscroll1%, 0, Div(X1%,2)
Setscrollrange Vscroll1%, 0, Div(Y1%,2)
Setscrollpos Hscroll1%, 0
Setscrollpos Vscroll1%, 0
Return Bild&
Endproc
Windowstyle 63
Windowtitle TASTE F12 neues Bild laden
Window 236,190 - 501,311
Cls Getsyscolor(15)
Usefont MS Sans Serif, 13,0,0,0,0
Setdialogfont 1
Hscroll1% = Create(HScroll,%Hwnd,, 0002,0260, 0490,0016)
Vscroll1% = Create(VScroll,%Hwnd,, 0476,0002, 0016,0256)
Hwstatus& = Control(STATIC,,$54001100, 2,2,472,255,%Hwnd,2000,%Hinstance,512) Wenn kleinere Profanversion, bitte 512 entfernen!!!
Bild$ =
Enablewindow Hscroll1%, 0
Enablewindow Vscroll1%, 0
Whilenot Ende%
Waitinput
If @Equ(%Key,2)
Let Ende% = 1
Elseif Equ(%Scankey,123)
Let Bild$ = @Loadfile$(ÖFFNE:, *.BMP)
If Neq$(Bild$,)
Laden Bild$
Bild& = @&(0)
Else
Destroywindow (Bild&)
Enablewindow Hscroll1%, 0
Enablewindow Vscroll1%, 0
Endif
Endif
If Neq$(Bild$,)
Enablewindow Hscroll1%, 1
Enablewindow Vscroll1%, 1
If Getfocus(Hscroll1%) HScroll
Hwscrollrech% = Getscrollpos(Hscroll1%) - Getscrollpos(Hscroll1%)*2
Setwindowpos Hwstatus2& = Hwscrollrech%,Vscrollrech% - X1%,Y1%,0
Repaint
Setfocus(%Hwnd)
Elseif Getfocus(Vscroll1%)VScroll
Vscrollrech% = Getscrollpos(Vscroll1%) - Getscrollpos(Vscroll1%)*2
Setwindowpos Hwstatus2& = Hwscrollrech%,Vscrollrech% - X1%,Y1%,0
Repaint
Setfocus(%Hwnd)
Endif
Endif
Endwhile