| |
|
|
| XDATA - Includes für XProfan 10 und höher Copyright 2006 by Thomas (ts-soft) Schulz
Echtes Compilieren mit XProfan
Dieses Paket besteht aus 2 Include-Dateien, 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-Datei leicht in XProfan-Programmen genutzt werden.
Die Funktionalität beschränkt sich auf benutzerdefinierte Resourcen auch als RCDATA bekannt (jede Art von Datei, Exe, Dll, BMP, Txt, Wav usw. möglich)
[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 Datei wird gelöscht), mit den erforderlichem Dateikennungen Ergebnis: Filehandle, welche für die weiteren Operationen benötigt 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 für die weiteren Operationen benötigt wird.
XDATA_Close(Filehandle&) Diese Funktion schließt die Resourcen-Datei. Ist unbedingt nach Beendigung des Hinzufügens auszuführen!
XDATA_Add(Filehandle&, FileName$, Nr&) Diese Funktion fügt die Datei FileName$ als Resource mit der Nummer Nr& der Resourcen-Datei hinzu. Nr& von 1 - 32767, jede Nr darf nur einmal mit diesen Routinen hinzugefügt werden (überschreiben nicht möglich)
XDATA_Link(FileName$) Diese Funktion linkt die übergebene Resource-Datei 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 befindet!
[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() übergeben!
XDATA_Free(hRes&) gibt die geladenen Resource wieder frei
XDATA_Save(ResNr&, FileName$, hModule&) hModule& ist Optional Speichert ResNr& als Datei 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-Datei 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 )
Gruß 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
Gruß Thomas |
|
|
| |
|
|
|
| Wow - ich wollte die Ressourcengeschichte auch über 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 Header etwas komplizierter. Das kannste natürlich per XPSE automatisieren. Der Resourcentyp X_DATA (XProfan-Data) sollte nur von dieser Inc. kommen, Standardname ist RCData
Mußt natürlich sicherstellen, das ResHacker bzw. GoLink gefunden werden, diese durch Profan-Code zu ersetzen ist mir bisher nicht geglückt
Gruß Thomas |
|
|
| |
|
|
|
| |
|
| |
|
|
|
| iF
Ok dann warte ich...
Dieses Jahr wird wahrscheinlich nicht reichen |
|
|
| |
|
|