|
Beschreibung:
Die Funktion LoadImage lädt einen Cursor, ein Icon oder ein Bitmap in den Speicher und gibt dessen Handle zurück.
Deklaration:
DEF @LoadImage(6) !USER32,LoadImageA
Parameter:
1.Parameter: Hier steht das Instanz-Handle des Moduls, aus dem das Bild geladen werden soll. Kann 0 sein, wenn das Bild aus einer File geladen wird und in Parameter 6 ‚$10’ vorhanden ist. 2.Parameter: Wenn $10 definiert wude, steht hier die Adresse eines Strings, der den Dateinamen des Bildes enthält. Wenn $10 nicht definiert wurde und in Parameter 1 ein Instanz-Handle definiert wurde, steht hier die Adresse eines Strings, der den Namen des Bildes in der File enthält. Wenn $10 nicht definiert wurde und in Parameter 1 kein Instanz-Handle definiert wurde, steht in den unteren zwei Byte (Word) der Identifier des OEM Images, das geladen werden soll. 3.Parameter: Hier steht ein Flag per den Typ des Images, das geladen werden soll => $0 = Bitmap $1 = Icon $2 = Cursor 4.Parameter: Hier steht die gewünschte Breite des Bildes in Pixeln als Integer. 5.Parameter: Hier steht die gewünschte Höhe des Bildes in Pixeln als Integer. 6.Parameter: Flags die bestimmen, wie das Bild geladen werden soll. Flags können mit | addiert werden => -$0 = Lädt das Bild farbig. -128 = Streckt das Bild nicht mit Parameter 4 und 5. Folgende Flags gibt’s nicht unter WindowsNT => -$1 =Lädt das Bild nicht farbig. -$40 = Lädt das Bild unter Verwendung der System Standartgröß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.
Rückgabewert:
Wurde die Funktion erfolgreich durchgeführt, wird das Handle des erzeugten Objektes zurückgeliefert. Bei Misserfolg 0.
Beispiele:
KompilierenMarkierenSeparierenDef 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
WEND
|
|