Oppure

Loading
01/09/08 18:32
come faccio a organizzarle in modo da essere ritrovate ? le inserisco e gli do un nome, tipo quando voglio usare le immagini in VC++ ? e come faccio a copiarle ?
01/09/08 19:39
Dax89
Sì gli dai dei nomi in modo tale da essere ritrovate
aaa
01/09/08 19:42
ok quello capito, ma poi per copiarle come faccio ?
02/09/08 19:57
Dax89
Non ho capito dove le vuoi copiare:

1) Eseguibile -> Disco
Il sorgente lo scritto un po' più su, rieccolo
//Cerco la risorsa nell'eseguibile
HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(ID_RISORSA), RT_RCDATA);

//Carico la risorsa
HGLOBAL hLoadRsrc = LoadResource(NULL, hRsrc);

//Ricavo il puntatore.
void* pRsrcData = LockResource(hLoadRsrc);

//...utilizzo la risorsa.... 


2) Disco -> Eseguibile :
Aggiungi il file dall'rc editor.

;)
aaa
03/09/08 15:47
si ho gia provato a fare cosi, ho inserito la risorsa e gli ho dato il nome IDB_CAMMELLO e poi ho inserito il tuo codice cosi :
//Cerco la risorsa nell'eseguibile 
HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDB_CAMMELLO), RT_RCDATA); 

//Carico la risorsa 
HGLOBAL hLoadRsrc = LoadResource(NULL, hRsrc); 

//Ricavo il puntatore. 
void* pRsrcData = LockResource(hLoadRsrc); 

//...utilizzo la risorsa....

ma non me la copia da nessuna parte, cosa devo aggiungere ?
Ultima modifica effettuata da 03/09/08 15:48
03/09/08 19:44
Dax89
Non la copia da nessuna parte, perchè il codice non fa altro che ricavare un puntatore alla risorsa desiderata, si ferma lì :D

Per salvarla FISICAMENTE, credo che i passi da seguire siano i seguenti (dopo che hai ricavato il puntatore alla risorsa desiderata):

- Ricavi la dimensione con SizeOfResource
- Scrivi su file i dati puntati dal puntatore che hai ricavato in precedenza, il numero dei bytes da scrivere te lo da SizeOfResource
aaa
03/09/08 20:00
scusa l'ignoranza ma non riesco a ottenere il numero di byte da scrivere, io faccio cosi:

int size = pRsrcData.SizeOfResource();

e una volta ottenuto il numero come faccio a tirarli fuori dal puntatore uno per volta ? cosi ?

int b;

for(numero di byte)
{
b=pRsrcData++;
}

e poi per scriverli uso ofstream ?
03/09/08 22:14
Dax89
Ehm, stiamo facendo un po' di confusione....:-|

//Cerco la risorsa nell'eseguibile
HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDB_CAMMELLO), RT_RCDATA);

//Carico la risorsa
HGLOBAL hLoadRsrc = LoadResource(NULL, hRsrc);

//Ricavo il puntatore.
void* pRsrcData = LockResource(hLoadRsrc);

int resSize = SizeOfResource(GetModuleHandle(NULL), hRsrc);

//Salvo la risorsa
HANDLE hFile = CreateFile("C:\MiaRisorsa.dat", GENERIC_READ, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);

DWORD bytesWritten;

WriteFile(hFile, pRsrcData, resSize, &bytesWritten, NULL);

CloseHandle(hFile);



Dovrebbe essere più o meno una cosa così ;)
aaa