Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Tutorial

Icons, Cursors, Strings und benutzerdefinierte Ressourcen

von Mitgliedcsde_ratsSeite 3 von 4

Benutzterdefinierte Resourcen

Was ist das denn schon wieder!?

Ganz einfach. Wir können jetzt Symbole, Mauszeiger, und Text speichern. Aber wie sieht's mit dem eigenen Dateiformat aus?
Hier helfen benutzterdefinierte Ressourcen. In ihnen kann man alles speichern, was man will, lediglich das Zeichen 0 (chr(0)) bereitet
Probleme. Ich zeige nur kurz, wie man eine benutzterdefinierte Resource einfügt und ausliest.

Das Resourcen-Skript:

#define MeineRes 13
MeineRes BINTYP DISCARDABLE "TolleDatei.dat"

Zum auslesen:

#define MeineRes 13
Dim As HWND hRes
Dim As ZString Ptr pData
hRes = LoadResource(getmodulehandle(null), FindResource(hInstance,MAKEINTRESOURCE(MeineRes),"BINTYP"))
pData = LockResource(hRes)
Open "bla.txt" For Output As #1
    Print #1, *pData
Close #1
FreeResource(hRes)

LoadResource() kann - wie LoadString() - nur mit ZStrings umgehen.

Dim As HWND hRes

Hiermit definieren wir den Handle zur Ressource.

Dim As ZString Ptr pData

Dort werden die Daten liegen.

hRes = LoadResource(getmodulehandle(null),...)

Hier wird LoadResource() gesagt, in welcher Datei sie suchen muss. (Natürlich in der eigenen .EXE-Datei)

...,FindResource(hInstance,MAKEINTRESOURCE(MeineRes),"BINTYP"))

Hier wird eine Art "zwischenhandle" zu unserer Ressource erzeugt.

pData = LockResource(hRes)

Hier wird die Ressource ausgelesen und der Inhalt in den automatisch belegten Speicher geschrieben.

Open "bla.txt" For Output As #1
    Print #1, *pData
Close #1

Hier wird der Inhalt der Ressource in die Datei "bla.txt" geschrieben.

FreeResource(hRes)

Der von LockResource() belegte Speicher wird wieder freigegeben. (pData zeigt nun auf einen ungültigen Speicherbereich)

Man kann sich auch eine Function schreiben, die eine Ressource in eine Datei speichert:

dim shared hInstance as HINSTANCE
hInstance = GetModuleHandle(NULL)

Function resource_SaveUserDefinedResourceToFile(RESID As Integer, RESTYPE As String, File As String) As Integer
    Dim As HWND hRes
    Dim As ZString Ptr pData
    Dim As Integer Erfolg

    hRes = LoadResource(hInstance, FindResource(hInstance,MAKEINTRESOURCE(RESID),RESTYPE))
    pData = LockResource(hRes)
    If *pData <> "" Then
        Erfolg = TRUE
        Open File For Output As #1
            Print #1, *pData
        Close #1
    Else
        Erfolg = FALSE
    End If
    FreeResource(hRes)

    Return Erfolg
End Function

 

Gehe zu Seite Gehe zu Seite  1  2  3  4  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 10.08.2007 von Mitgliedcsde_rats angelegt.
  • Die aktuellste Version wurde am 27.02.2009 von Mitgliedcsde_rats gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen