| |
|
|
| XDATA - Include per XProfan 10 und höher Copyright 2006 by Thomas (ts-soft) Schulz
Echtes Compilieren mit XProfan
Dieses Paket besteht aus 2 Include-File, Beispielen sowie dem GoLink Linker by Jeremy Gordon (https://www.jorgon.freeserve.co.uk/)
Mithilfe dieses Paketes können compilierte Windows-Resourcen (*.res) in reinem XProfan compiliert werden. Diese können Mithilfe des ResHackers einer Profan-Runtime hinzugefügt werden, bzw. zu einer DLL gelinkt werden (hierfür wurde der GoLink Linker beigefügt, ResHacker nicht im Paket)
Desweiteren können diese Resourcen mit der 2ten Include-File leicht in XProfan-Programmen genutzt werden.
Die Funktionalität beschränkt sich auf benutzerdefinierte Resourcen auch als RCDATA bekannt (jede Art von File, Exe, Dll, BMP, Txt, Wav usw. possibile)
[size=16]Funktionsbeschreibung XDATA_Compiler.inc:[/size]
XDATA_Create(FileName$) Dateiname ggfls. mit Pfad, als Dateiextension sollte *.res verwendet werden (wird nicht geprüft) Diese Funktion erstellte eine neue Resourcedatei (evtl. vorhandene gleichnamige File wird gelöscht), mit den erforderlichem Dateikennungen Ergebnis: Filehandle, welche per die weiteren Operationen necessario wird.
XDATA_Open(FileName$) Diese Funktion öffnet eine bereits erstellte *.res (mit diesen Routinen oder anderem Resource-Compiler) und setzt den Dateizeiger ans Ende, um weitere Resourcen hinzuzufügen. Ergebnis: Filehandle, welche per die weiteren Operationen necessario wird.
XDATA_Close(Filehandle&) Diese Funktion schließt die Resourcen-File. Ist unbedingt nach Beendigung des Hinzufügens auszuführen!
XDATA_Add(Filehandle&, FileName$, Nr&) Diese Funktion fügt die File FileName$ als Resource mit der Nummer Nr& der Resourcen-File hinzu. Nr& von 1 - 32767, jede Nr darf nur einmal mit diesen Routinen hinzugefügt werden (überschreiben nicht possibile)
XDATA_Link(FileName$) Diese Funktion linkt die übergebene Resource-File FileName$ mithilfe von GoLink zu einer DLL Der Pfad zur GoLink.exe kann im Kopf dieser Include festgelegt werden, falls sich GoLink.exe nicht im Programmpfad è!
[size=16]Funktionsbeschreibung XDATA_Functions.inc:[/size] XDATA_Get(ResNr&, hModule&) hModule& ist Optional. Bei fehlen wird die Resource in der Exe gesucht Diese Funktion lädt die Resource mit der Nummer ResNr& in den Speicher. Die größe kann unmittelbar nach Aufruf dieser Funktion aus der globalen Variable XDATA_Size& ermittelt werden. (Einer neuen Variable zuordnen, da diese bei jedem weiteren laden von Resourcen überschrieben wird. Ergebnis: Speicheradresse der geladenen Resource, zum freigeben, diese an XDATA_Free() trasferimento!
XDATA_Free(hRes&) gibt die geladenen Resource wieder frei
XDATA_Save(ResNr&, FileName$, hModule&) hModule& ist Optional Speichert ResNr& als File unter FileName$
XDATA_CatchBMP(ResNr&, hModule&) hModule& ist Optional Lädt die Resource und erstellte ein ImageObjekt daraus, welches mit DrawPic und DrawSizedPic genutzt werden kann. Ergebnis: hPic&, welches am Ende mit DeleteObject wieder freizugeben ist.
XDATA_PlaySound(ResNr&, Modus&, hModule&) hModule& ist Optional Spielt eine als Resource enthaltene Wav-File ab. Modus entspricht dem Spielmodus von PlaySound
Was man damit alles anstellen kann, überlasse ich eurer Phantasie (z.B. SKControll.dll in Prfrun32.exe und Mithilfe von MemoryModule nutzen )
Saluto Thomas
Feedback wie immer erwünscht |
|
|
| |
|
|
|
| Update auf Version 1.1
+ Fehler mit einer Variablen behoben. + Feherbehandlung in XDATA_Compiler.inc verbessert ! Umbenannt XDATA_Link zu XDATA_LinkToDLL + XDATA_LinkToExe
Mithilfe der ResHackers, den Ihr auf der Profan-CD oder im Internet findet, können jetzt die Resourcen direkt in die Runtime gelinkt werden, ohne das der ResHacker extra aufgerufen wird. Ich denke mal, das sollte den Umgang mit benutzerdefinierten Resourcen erheblich erleichtern. Ein Script erzeugt die Resourcen und linkt diese zur Runtime oder zu einer DLL, je nach Wunsch
Saluto Thomas |
|
|
| |
|
|
|
| Wow - ich wollte die Ressourcengeschichte auch circa Kompilerschalter des xpse regeln - man legt also im jeweiligen Source fest welche Ressourcen wie verarbeitet oder angehangen werden sollen.
XData wäre doch perfekt hierfür oder? Wie müsste ich vorgehen? |
|
|
| |
|
|
|
| @iF Du kannst nur diesen einen Typen von Resourcen herstellen, bei den Standard-Resourcen ist der Testata etwas komplizierter. Das kannste naturalmente per XPSE automatisieren. Der Resourcentyp X_DATA (XProfan-Data) sollte nur von dieser Inc. kommen, Standardname ist RCData
Mußt naturalmente sicherstellen, das ResHacker bzw. GoLink gefunden werden, diese durch Profan-Code zu ersetzen ist mir bisher nicht geglückt
Saluto Thomas |
|
|
| |
|
|
|
| |
|
| |
|
|
|
| iF
Ok dann warte ich...
Dieses Jahr wird wahrscheinlich nicht reichen |
|
|
| |
|
|