Verschiedene Fragen zu Ressourcen
-
Hallo,
zuerst wollte ich anmerken, dass ich die Suche benutzt habe

1. Wie linke ich mit wxDevC++ Ressourcen zu einem Projekt? Zurzeit habe ich die mit dem XN Resource Editor erstellte .res-Datei einfach zum Projekt hinzugefügt. Ich denke nicht, dass das richtig war:
XN-Resource-Editor String-Table:
http://img3.imagebanana.com/img/fcyxohoi/xn.jpgProjekt in wxDevC++:
http://img3.imagebanana.com/img/99ugzgy9/devcpp.jpg2. Wie lese ich dann aus dieser Ressource einen String aus? Das hier ist mein (noch nicht funktionierender) Code:
#include <cstdlib> #include <iostream> #include <windows.h> using namespace std; void *GetDataFromResources(HINSTANCE pModuleHandle, long pResourceName, long pResourceType) { HRSRC ResourceInfo; ResourceInfo = FindResourceA(pModuleHandle,MAKEINTRESOURCEA(pResourceName),MAKEINTRESOURCEA(pResourceType)); if(ResourceInfo == 0) { return false; } return LoadResource(pModuleHandle,ResourceInfo); } int main(int argc, char *argv[]) { HINSTANCE gInstance; char *gTextPointer, *gTitlePointer; gInstance = GetModuleHandleA(0); gTextPointer = (char*)GetDataFromResources(gInstance,0x01000,[Was muss ich hier für die String-Table schreiben?]); cout << gTextPointer << endl; system("PAUSE"); return EXIT_SUCCESS; }Den Code habe ich zum Großteil aus einem Tutorial. Ist der Wert 0x01000, den ich in Zeile 23 angegeben habe gleichbedeutend mit der String-ID 1 in der String-Table oder gibt es da noch eine andere Schreibweise? Weiterhin ist mir nicht klar, warum die Funktion GetDataFromResources vom Typ void ist und return´s drin hat...
Vielen Dank,
Blu-Ray
//edit: Ich benutze mingw32 (C++)
-
Hallo,
wenn du Strings von einer Stringtable (ANSI) haben möchtest, so verwende
char szBuffer[255];
LoadString(hInstance, Nr_des_String, szBuffer, sizeof(szBuffer));ist der Unicode,
nimm LoadStringW( ... )für jeden Resourcentyp gibt es eine extra dafür gemachte Laderoutine.
-
Vielen Dank für die Antwort...
Das hier ist mein aktueller Code:#include <cstdlib> #include <iostream> #include <windows.h> using namespace std; int main(int argc, char *argv[]) { HINSTANCE hInstance; char *szBuffer[255]; hInstance = GetModuleHandle(NULL); LoadStringA(hInstance,0,*szBuffer,sizeof(szBuffer)); system("PAUSE"); return EXIT_SUCCESS; }Wenn ich den Indirektionsoperator (*szBuffer) durch den Adressoperator(&szBuffer) ersetze (wie du es vorgeschlagen hast), bekomme ich diesen Fehler:
16 D:\temp\stub\main.cpp cannot convert `char* (*)[255]' to `CHAR*' for argument `3' to `int LoadStringA(HINSTANCE__*, UINT, CHAR*, int)'Der Code an sich funktioniert jetzt mit dem Indirektionsoperator, allerdings bekomme ich diese Fehler:
File format not recognized ld returned 1 exit status D:\temp\test\Makefile.win [Build Error] exe: *** [Output/MingW/test.exe] Error 1Ich denke, das wird etwas mit meiner Ressource-File zu tun haben, oder?
Die Ressource-File habe ich per Projekt --> Projekt Optionen --> Zusätzliche Kommmandozeilenoptionen --> Linker --> Bibliothek/Objekt hinzufügen eingefügt:
http://img3.imagebanana.com/img/ghyewoy/res.jpg
-
beschäftige dich bitte nochmal mit pointern
-
bernibutt schrieb:
beschäftige dich bitte nochmal mit pointern
Der Fehler ist mir passiert. Ich habe im Gedanken: Zeiger auf ein & vor szBuffer gesetzt.
char* GetResString(int nRes){ static char buffer[MAXRESSTRING]; LoadString(hInst, nRes, buffer, MAXRESSTRING); return (char*)buffer; }Allerdings finde ich ein konkretes Beispiel liefern besser als solches Gemaule!
Das Diskussionsklima hier ist ja schon unter aller Sau.
@Blu-Ray, was gemeint ist: Ein Array ist immer selbst ein Pointer.MAXRESSTRING ist hier ein
#define MAXRESSTRING 255
-
Vielen Dank,
der Code hat nun keine Fehler mehr, allerdings bekomme ich das mit dem Linken der .rc bzw .res-Datei noch nicht hin. Ich habe immer noch diese Linker-Errors:
File format not recognized ld returned 1 exit status D:\temp\test\Makefile.win [Build Error] exe: *** [Output/MingW/test.exe] Error 1Welche IDE benutzt ihr?
-
Sorry, ich war die ganze Zeit am umziehen und konnte erst jetzt wieder online kommen. Allen ein frohes neues Jahr 2009.
Kann mir keiner mal kurz demonstrieren, wie er die Ressourcen aufbaut (welchen Ressource-Editor er verwendet, welche IDE usw..)
Danke nochmal,
Blu-Ray
-
nö leg dir ne ordentliche IDE zu, woher sollen wir wissen wie dein schrottiges mingw geht. Visual studio is umsonst, benutz halt das und 1 resourcen editor.
