| |
|
|
| Quelle: [...] , Stand: 26.04.2004 Auf den Seiten von Sebastian Sprenger habe ich folgenden interessanten Source gefunden. Ein Beispiel per den Umgang mit Ressourcen. KompilierenMarkierenSeparierenRessourcen abspielen (als Wave oder MIDI) und in echte Dateien schreiben
Profan 6.5 Version
© 2002 by Sebastian Sprenger
Benötigte Funktionen
def LoadResource(2) !KERNEL32,LoadResource
def FindResource(3) !KERNEL32,FindResourceA
def LockResource(1) !KERNEL32,LockResource
def SizeofResource(2) !KERNEL32,SizeofResource
def sndPlaySound(2) !WINMM,sndPlaySoundA
Ressource öffnen
proc OpenResource
parameters hinst&,Typ$,Name$
res1&=FindResource(hinst&,addr(Name$),addr(Typ$)) Ressource in der Instanz suchen
res2&=LoadResource(hinst&,res1&) Ressource laden
res3&=LockResource(res2&) Ressource sperren(?)
endproc
WriteResourceToFile H,S1,S2,S3
H : LongInt - Instanz-Handle der Ressource
S1 : String - Name der Ressource
S2 : String - Typ der Ressource
S3 : String - Name der Zieldatei
Schreibt eine Ressource in eine Datei.
proc WriteResourceToFile
parameters hinst&,Typ$,Name$,Datei$
declare res1&,res2&,res3&,res#,res2#,max&
OpenResource hinst&,Typ$,Name$ Ressource öffnen
max&=SizeofResource(hinst&,res1&) Größe der Ressource ermitteln
dim res#,max&+1
res2#=res#
res#=res3& Ressource in eine Bereichsvariable
assign #1,Datei$
openrw #1
blockwrite #1,res#,0,max& Bereich in Datei schreiben
closerw #1
dispose res2#
endproc
PlayExtSound H,S,N
H : LongInt - Instanz-Handle der Ressource
S : String - Name der Ressource
N : Integer - Modus (siehe Profan-Befehl PlaySound)
Spielt einen Sound in einer Ressource (Typ WAVE) ab
proc PlayExtSound
parameters hinst&,Name$,Mode%
declare res1&,res2&,res3&
OpenResource hinst&,WAVE,Name$ Ressource öffnen
sndPlaySound(res3&,Mode% or 4) Ressource abspielen (4=SND_RESOURCE)
endproc
PlayExtMidi H,S
H : LongInt - Instanz-Handle der Ressource
S : String - Name der Ressource
Spielt eine Midi-Datei in einer Ressource (Typ MIDI) ab
Da MIDIs nur über MCI und als Datei ansprechbar sind, wird die Datei im temporären Verzeichnis gespeichert
proc PlayExtMidi
parameters hinst&,Name$
declare res1&,res2&,res3&,Datei$
Datei$=$winpath;TEMP;Name$;.MID Die MIDI-Datei gehört ins Temp-Verzeichnis
WriteResourceToFile hinst&,MIDI,Name$,Datei$ MIDI-Ressource in eine Datei schreiben
setfattr Datei$,$22 MIDI-Dateien verstecken
mcisend$(OPEN +chr$(34)+Datei$+chr$(34)+ TYPE SEQUENCER ALIAS MIDI)
mcisend$(PLAY MIDI) Musik einschalten
endproc
CloseExtMidi S
S : String - Name der Ressource
Schliesst die Midi-Datei wieder und löscht die temporäre Datei
proc CloseExtMidi
parameters Datei$
mcisend$(CLOSE MIDI) Musik ausschalten
assign #1,Datei$ Die temporäre MIDI-Datei wieder löschen
erase #span>
endproc
Vielen Dank Sebastian.
iF |
|
|
| |
|
|