Français
Source/ Codesnippets

Bilddateien Bilder Bmp Cur Dib Emf Gif Ico Jpe Jpeg Jpg Ole Rle Wmf

 
Andreas Miethe (08.08.11)
ou bien per OLE !

ici la fois un Beispiel

cela sieht zwar compliqué aus, mais je zeig es quand même la fois.

cet comme OLE_LOADIMAGE.INC abspeichern.
'############################################
'Bilder avec OLE magasin et Montrer
'############################################
'Andreas Miethe * juillet 2002
'############################################
'ab Profan 7.X
'############################################
'getestet avec Win98, WinME et WinXP
'mais devrait aussi déjà avec Win95
'marcher.
'############################################
'unterstützte Formate :
'BMP,RLE,DIB,JPG,JPE,JPEG,GIF,EMF,WMF,CUR,ICO
'aucun animierten Gif's
'############################################
'Definitionen
DEF CreateStreamOnHGlobal(3) ! "OLE32","CreateStreamOnHGlobal"
DEF OleLoadPicture(5) ! "OLEPRO32","OleLoadPicture"
DEF OleInitialize(1) ! "OLE32","OleInitialize"
DEF OleUnInitialize(0) ! "OLE32","OleUninitialize"
DEF GlobalAlloc(2)  ! "KERNEL32","GlobalAlloc"
DEF GlobalLock(1)  ! "KERNEL32","GlobalLock"
DEF GlobalUnlock(1)  ! "KERNEL32","GlobalUnlock"
DEF GlobalFree(1)  ! "KERNEL32","GlobalFree"
DEF CopyMemory(3)  ! "KERNEL32","RtlMoveMemory"
DEF SelectObject(2) ! "gdi32","SelectObject"
DEF GetDeviceCaps(2) ! "gdi32","GetDeviceCaps"
DEF GetDC(1) ! "User32","GetDC"
DEF ReleaseDC(2) ! "User32","ReleaseDC"
DEF FindResource(3) ! "KERNEL32","FindResourceA"
DEF LoadResource(2) ! "KERNEL32","LoadResource"
DEF SizeOfResource(2) ! "KERNEL32","SizeofResource"
'Konstanten
DEF &Picture_Release     8
DEF &Picture_GetHandle  12
DEF &Picture_GetType    20
DEF &Picture_Get_Width  24
DEF &Picture_Get_Height 28
DEF &Picture_Render     32
DEF &Picture_Select     44
'Globale Variablen
DECLARE OLE32&,OLEPRO32&
DECLARE IID_IPicture#
DECLARE PData#
DECLARE HMEM&
'Prozeduren

Proc Ole_Init'Ole-Schnittstelle initialisieren et Variablen fuellen

    OLE32& = UseDll("OLE32")
    OLEPRO32& = UseDll("OLEPRO32")
    OleInitialize(0)
    Faible IID_IPicture#,16
    Long IID_IPicture#,0 = $7BF80980
    Word IID_IPicture#,4 = $BF32
    Word IID_IPicture#,6 = $101A
    Byte IID_IPicture#,8 = $8B
    Byte IID_IPicture#,9 = $BB
    Byte IID_IPicture#,10 = $00
    Byte IID_IPicture#,11 = $AA
    Byte IID_IPicture#,12 = $00
    Byte IID_IPicture#,13 = $30
    Byte IID_IPicture#,14 = $0C
    Byte IID_IPicture#,15 = $AB

ENDPROC

Proc Ole_Free'Ole-Schnittstelle Speicherbereiche freigeben

    GlobalFree(Hmem&)
    OleUnInitialize()
    FreeDll OLE32&
    FreeDll OLEPRO32&
    DISPOSE IID_IPicture#

ENDPROC

Proc Ole_LoadImage'Bild avec OLE magasin

    Déclarer MemPointer&,PStream&,PictureObject&,PSize&
    Paramètres Picture$
    '------------------------
    Filemode 0
    PSIZE& = Filesize(Picture$)
    Faible PData#,PSIZE&
    Assign #1,Picture$
    OpenRW #1
    BlockRead(#1,PData#,0,PSIZE&)'données dans Bereichsvariable einlesen
    CloseRW #1
    '------------------------
    GlobalFree(Hmem&)
    HMem& = GlobalAlloc($022,PSize&)'grenier reservieren
    Mempointer& = GlobalLock(Hmem&)'Pointer sur grenier
    CopyMemory(MemPointer&,PData#,PSize&)'Bereichsvariable dans grenier schieben
    DISPOSE PData#'Bereichsvariable freigeben
    GlobalUnlock(HMem&)'grenier zum Gebrauch freigeben
    CreateStreamOnHGlobal(Hmem&,1,addr(PStream&))'Stream-Pointer erstellen
    OleLoadPicture(PStream&,PSIZE&,0,IID_IPicture#,ADDR(PictureObject&))'Pointer pour Pictureobject
    '------------------------
    Cas PictureObject& > 0 : Retour PictureObject&
    Cas PictureObject& = 0 : Retour 0

ENDPROC

Proc Ole_LoadResImage'Bild aus Modul avec OLE magasin

    Déclarer MemPointer&,PStream&,PictureObject&,PSize&
    Déclarer Reshandle&,GlobalMem&
    Paramètres Modul&,Resname$,Restype$
    GlobalFree(Hmem&)
    '------------------------
    'Resource magasin
    Reshandle& = FindResource(Modul&,addr(Resname$),addr(Restype$))
    Globalmem& = LoadResource(Modul&,ResHandle&)
    PSize& = SizeOfResource(Modul&,Reshandle&)
    '------------------------
    HMem& = GlobalAlloc($022,PSize&)'grenier reservieren
    Mempointer& = GlobalLock(Hmem&)'Pointer sur grenier
    CopyMemory(MemPointer&,Globalmem&,PSize&)'Bereichsvariable dans grenier schieben
    GlobalUnlock(HMem&)'grenier zum Gebrauch freigeben
    CreateStreamOnHGlobal(Hmem&,1,addr(PStream&))'Stream-Pointer erstellen
    OleLoadPicture(PStream&,PSIZE&,0,IID_IPicture#,ADDR(PictureObject&))'Pointer pour Pictureobject
    '------------------------
    Cas PictureObject& > 0 : Retour PictureObject&
    Cas PictureObject& = 0 : Retour 0

ENDPROC

Proc Ole_RenderImage'Bild sur DC rendern

    Paramètres DC&,wnd&,PictureObject&,xx&,yy&,ww&,hh&,Center&
    Déclarer Command&,Aspect!,xpixels&,ypixels&,ImageWidth&,ImageHeight&,w&,h&,ImageX&,ImageY&
    Command& = Long(PictureObject&,0)
    'RENDERN vorbereiten
    'Breite et Hoehe auslesen
    Call(@Long(Command&,&Picture_Get_Width),PictureObject&,addr(w&))
    Call(@Long(Command&,&Picture_Get_Height),PictureObject&,addr(h&))
    'Imagebreite et Hoehe berechnen
    xpixels& = GetDeviceCaps(DC&, 88)
    ypixels& = GetDeviceCaps(DC&, 90)
    ImageWidth&  = (w&*xpixels&)/2540
    ImageHeight& = (h&*ypixels&)/2540
    'Imagebreite et Hoehe à la fenêtre anpassen si trop gross
    Aspect! = Imagewidth&/ImageHeight&

    Si OU(Imagewidth& > ww&,Imageheight& > hh&)

        ImageHeight& = hh&
        ImageWidth& =  ImageHeight&*aspect!

        Si ImageWidth& > ww&

            ImageWidth& = ww&
            ImageHeight& = ImageWidth&/aspect!

        EndIf

    Endif

    'et Einfuegepunkte (Zentrierung) berechnen

    Si Center& = 1

        ImageX& = width(%hwnd)/2 - Imagewidth&/2
        ImageY& = height(%hwnd)/2 - Imageheight&/2

    D'autre

        ImageX& = xx&
        ImageY& = yy&

    Endif

    'sur DC Rendern
    Call(@Long(Command&,&Picture_Render),PictureObject&,DC&,Imagex&,Imagey&,Imagewidth&,ImageHeight&,0,h&,w&,(h&*-1),0)

ENDPROC

Proc Ole_GetType'Bildtyp ermitteln

    Paramètres PictureObject&
    Déclarer Command&,PicFormat&
    Command& = Long(PictureObject&,0)
    Call(@Long(Command&,&Picture_GetType),PictureObject&,addr(PicFormat&))
    Retour PicFormat&

ENDPROC

Proc Ole_GetHandle'BildHandle ermitteln

    Paramètres PictureObject&
    Déclarer Command&,PicHandle&
    Command& = Long(PictureObject&,0)
    Call(@Long(Command&,&Picture_GetHandle),PictureObject&,addr(PicHandle&))
    Retour PicHandle&

ENDPROC

Proc Ole_FreeImage'Bild freigeben

    Paramètres PictureObject&
    Déclarer Command&
    Command& = Long(PictureObject&,0)
    Call(@Long(Command&,&Picture_Release),PictureObject&)

ENDPROC

et zum magasin et Montrer qui Bilder cette Code benutzen:
'############################################
'Bilder avec OLE magasin et Montrer
'############################################
'Andreas Miethe * juillet 2002
'############################################
'ab Profan 7.X
'############################################
'getestet avec Win98, WinME et WinXP
'le son Microsoft avec WindowNT ab Version 4.0
'et Windows95 lauffaehig
'############################################
'unterstützte Formate :
'BMP,RLE,DIB,JPG,JPE,JPEG,GIF,EMF,WMF,CUR,ICO
'aucun animierten Gif's
'############################################
'
'Anwendungsbeispiel
'
'############################################
'
'Prozeduren qui Include
'1. Ole_Init -> initialisiert qui Ole_Schnittstelle
'------------------------------------------------------------------------------------
'2. Ole_LoadImage -> Laedt cela Bild et gibt une aiguille sur cela Bildobject zurueck
'   paramètre Filename$
'------------------------------------------------------------------------------------
'3. Ole_RenderImage -> Rendert cela Bild sur un DC
'   paramètre   : DC&
'               : FensterHandle des DC
'               : aiguille sur Bildobject
'               : Einfuegepunkt X
'               : Einfuegepunkt Y
'               : Breite
'               : Hoehe
'               : Flag pour Zentrierung
'                       1 = Zentrieren X,Y,W et H koenne zéro son
'                       0 = ne...aucune Zentrieren X,Y,W et H mussen angegeben volonté
'------------------------------------------------------------------------------------
'4. Ole_GetType -> ermittelt den Bildtypen
'   paramètre aiguille sur Bildobject
'   Rueckgabe   : 1 pour BITAP
'               : 2 pour WMF
'               : 3 pour ICON ou bien CURSOR
'               : 2 pour EMF
'------------------------------------------------------------------------------------
'5. Ole_FreeImage -> gibt cela Bildobject libre
'   paramètre aiguille sur Bildobject
'------------------------------------------------------------------------------------
'6. Ole_Free -> gibt qui Ole_Schnittstelle et Speicherbereich libre
'------------------------------------------------------------------------------------
'7. Ole_LoadResImage -> Laedt cela Bild aus einem Modul et
'                       gibt une aiguille sur cela Bildobject zurueck
'   paramètre   : 1 = ModulHandle
'               : 2 = Resource-nom
'               : 3 = Resource-Typ
'------------------------------------------------------------------------------------
 $I profalt.inc'erspart certains Reparaturen - pour schnelle Testen...
 $I Ole_LoadImage.inc
DECLARE PictureObject&,Picture$,Type&
window 0,0-%maxx,%Maxy
cls rgb(192,192,192)
Ole_Init()

Si Picture$ = »

    Picture$ = LoadFile$("ÖFFNE","alle unterstützten Formate|*.dib;*.bmp;*.rle;*.jpe;*.jpeg;*.jpg;*.gif;*.ico;*.cur;*.emf;*.wmf|\
    Bitmap (bmp,rle,dib)|*.bmp;*.rle;*.dib|Jpeg (jpg,jpe,jpeg)|*.jpg;*.jpe;*.jpeg|Gif (gif)|*.gif|\
    Enhanced Metafile (emf)|*.emf|Metafile (wmf)|*.wmf|Icônes (Ico)|*.ico|Cursor (cur)|*.cur")

endif

Si Picture$ <> »

    UseCursor 2
    'Ole_LoadResImage 0,"#100","JPEG"
    PictureObject& = Ole_LoadImage(Picture$)

    Si PictureObject& > 0

        Ole_RenderImage(%hdc2,%hwnd,PictureObject&,0,0,width(%hwnd),height(%hwnd),1)
        Repaint'Update
        Type& = Ole_GetType(PictureObject&)
        Cas Type& = 1: Settext %hwnd,"Bitmap"
        Cas Type& = 2: Settext %hwnd,"WMF"
        Cas Type& = 3: Settext %hwnd,"Icon / Cursor"
        Cas Type& = 4: Settext %hwnd,"EMF"
        UseCursor 0
        Ole_FreeImage(PictureObject&)

    d'autre

        MessageBox("Falsches Grafikformat ! ou bien Dossier beschädigt","Meldung",0)

    Endif

endif

waitinput
Ole_Free()
Fin
Gruss
Andreas
 
08.08.2011  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

4.446 Views

Untitledvor 0 min.
H.Brill18.02.2024
Alibre25.01.2024
Langer18.12.2021
Georg Teles02.08.2021
plus...

Themeninformationen

cet Thema hat 1 participant:

iF (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie