vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2015
 
zurück
Rubrik: COM/OLE/Registry/DLL · Sonstiges   |   VB-Versionen: VB5, VB610.09.04
JPG´s in ActiveX-DLL auslagern

Auslagern von Bilddateien, wie JPG´s in DLL-Dateien und Auslesen dieser Bilder im Projekt

Autor:   Andy KellerBewertung:     [ Jetzt bewerten ]Views:  11.881 
www.ackeller.chSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10kein Beispielprojekt 

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise über 100,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 455,- EUR statt 569,- EUR
  • sevDTA 2.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 18,70 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 58,70 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig

    Wenn Sie ein Programm erstellen, welches viele der speicherfreundlichen JPG-Bilder enthält, gibt es eine Möglichkeit, diese in eine ActiveX-DLL auszulagern. Somit lässt sich die Dateigrösse der eigentliche EXE-Datei auf ein Minimum reduzieren.

    1. Erstellen einer Resource-Datei
    Zuerst erstellen wir eine Textdatei mit nachfolgendem Aufbau und speichern diese unter dem Namen Bilder.rc ab:

    	// JPG-Bilder
    	1000 JPG DISCARDABLE "Testbild.jpg"

    Anschliessend kompilieren wir diese Datei mit dem VB-Resourcencompiler (rc.exe) und erhalten die ResourcendateiBilder.res

    2. Erstellen der DLL
    Nun erstellen wir ein neues ActiveX-DLL Projekt und fügen folgenden Code ein:

    Option Explicit
    ' Benötigte API-Deklarationen
    Private Declare Function CreateStreamOnHGlobal Lib "ole32.dll" ( _
      ByVal hGlobal As Long, _
      ByVal fDeleteOnRelease As Long, _
      lpIStream As IUnknown) As Long
     
    Private Declare Function OleLoadPicture Lib "oleaut32.dll" ( _
      ByVal lpStream As IUnknown, _
      ByVal lSize As Long, _
      ByVal fRunmode As Long, _
      riid As Any, _
      lpIPicture As IPicture) As Long
    ' Bild aus RES-Datei laden und
    ' als StdPicture-Objekt zurückgeben
    Public Function LoadImageFromRES(ByVal nResID As Long, sType) As StdPicture
      Dim IID_IPicture(3) As Long
      Dim oPicture As IPicture
      Dim bImg() As Byte
      Dim nResult As Long
      Dim oStream As IUnknown
      Dim hGlobal As Long
     
      ' Bild als ByteArray aus RES-Datei laden
      bImg = LoadResData(nResID, sType)
     
      ' Array füllen um den KlassenID (CLSID) IID_IPICTURE
      ' zu simulieren
      IID_IPicture(0) = &H7BF80980
      IID_IPicture(1) = &H101ABF32
      IID_IPicture(2) = &HAA00BB8B
      IID_IPicture(3) = &HAB0C3000
     
      ' Stream erstellen
      Call CreateStreamOnHGlobal(VarPtr(bImg(LBound(bImg))), 0, oStream)
     
      ' OLE IPicture-Objekt erstellen
      nResult = OleLoadPicture(oStream, 0, 0, IID_IPicture(0), oPicture)
      If nResult = 0 Then
        Set LoadImageFromRES = oPicture
      End If
    End Function

    Wir nennen die Klasse clsBilder und fügen dem Projekt die Resourcendatei hinzu. Danach kompilieren wir das Projekt zu unserer Bilder.dll.

    3. Auslesen der JGP-Bilder aus der DLL
    Wir erstellen ein neues Standard-EXE Projekt und fügen eine Image-Box und einen CommandButton mit folgendem Code hinzu:

    Dim objBild As Bilder.clsBilder  ' Name der dll, Name der Klasse
     
    Set objBild = New Bilder.clsBilder
    Set image1.Picture = objBild.LoadImageFromRES(1000, "JPG")
    Set objBild = Nothing

    Vergessen Sie nicht, zuerst einen Verweis auf die Bilder.dll (Menü Projekt - Verweise) zu setzten.

    Auf diese Weise lassen sich die Bilder allesamt in eine DLL-Datei auslagern und bei Bedarf in der eigentlichen Anwendung anzeigen.
     

    Dieser Tipp wurde bereits 11.881 mal aufgerufen.

    Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

    Über diesen Tipp im Forum diskutieren
    Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

    Aktuelle Diskussion anzeigen (3 Beiträge)

    nach obenzurück


    Anzeige

    Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

    Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
    - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
    - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
    Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
     
       

    Druckansicht Druckansicht Copyright ©2000-2015 vb@rchiv Dieter Otter
    Alle Rechte vorbehalten.
    Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

    Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel