Newsgroup: it.comp.programmare.win32
Titolo: Caricare risorse da file

Salve a tutti! Esiste un comando o una macro simile a
MAKEINTRESOURCE(###########) che permette di specificare la risorsa dal
disco fisso piuttosto che da file .res? Spero di essere stato chiaro
HellHound - uccidi CERBERO per l'indirizzo

 stato chiaro
Domanda interessante. Di primo acchito ti avrei risposto di no, ma
effettivamente se compili la risorsa e la tieni su un file a parte
anziche` linkarla nell'eseguibile, in seguito potresti leggerla come un
normale file binario e memorizzarla dentro a un HGLOBAL. Probabilmente
Windows non noterebbe la differenza, dopotutto LoadResource() non credo
che elabori in nessun modo le risorse e si limiti a semplificare alcune
operazioni (come l'allocazione della memoria e la scelta della risorsa
associata alla lingua giusta)...
-- 
Lorenzo

 associata alla lingua giusta)...
In pratica terrei una risorsa binaria (senza nemmeno creare il file rc che
al momento non mi serve) ed utilizzare come tipo di dato un HGLOBAL (questo
in maniera molto sintetica). E' cosi' che intendevi dire? Credo che
LoadResource() si limita semplicemente a ricevere la risorsa caricata ed
assegnargli la sua memoria (correggetemi se sbaglio), o almeno il dal file
.hlp ho capito cosi'. Sai che ti dico? A me me piace st'idea! Mo' ce provo!
Thanx! Faccio sapere! Intanto se qualcun'altro ha qualche dritta faccia
pure!
HellHound - usa la spada BALMUNG contro CERBERO per l'indirizzo

associata alla lingua giusta)...
E' quello che faccio in un mio programma per caricare una bitmap da
file su disco: ho preferito non includerla "direttamente" nel file
.rc, nel quale tale bitmap compare in questo modo:
IDR_STARTUP RCDATA "Startup.bmp"
dove IDR_STARTUP e' l'id.
Cosi' facendo posso modificarla con gli strumenti di Windows (o altri
programmi) e non quelli limitati del resource editor.
Nel programma poi uso le seguenti funzioni:
hRes=FindResource(hInst,MAKEINTRESOURCE(IdRes),RT_RCDATA);
hBmp=LoadResource(hInst,(HRSRC)hRes);
lp=(LPSTR)LockResource(hBmp);
Ciao
Stefano "HappyMan" (Lago Maggiore - NO)
--
Personal Web 
http://www.sgr.info
Email happyman69 (at) 
libero.it

 lp=(LPSTR)LockResource(hBmp);
Supponevo che una cosa del genere funzionasse! In effetti LoadBitmap()
fa ben poco...
Comunque l'altro utente se ho capito bene ha un'esigenza ancora piu`
"estrema": lui vuole proprio tenere le risorse fuori dall'eseguibile, e
caricarle a runtime da un file separato...
-- 
Lorenzo

 al momento non mi serve)
Non esattamente. La sequenza e` questa:
file1.c ---> CC.EXE --> file1.obj --+
                                    |
                                    +--> LINK.EXE --> programma.exe
                                    |
file2.rc --> RC.EXE --> file2.res --+
Il file .RC e` il "sorgente" del resource compiler, che in output
produce il file .RES. E` quest'ultimo quello che ti interessa; anziche`
linkarlo nell'eseguibile, lo tieni separato e lo carichi a parte.
Ovviamente e` necessario fare degli esperimenti, non e` detto che
funzioni al primo colpo...
-- 
Lorenzo

 ha scritto nel messaggio
news:bbdk3f$kd8$1...@lacerta.tiscalinet.it...

Forse vado fuori tema,
ma le DLL possono contenere risorse. Piu' di un volta ho realizzato delle
DLL solo come contenitori di librerie di bmp e/o altro.
Ciao. Federico.

 wrote in message
news:LdPCa.55503$
lK4.1...@twister1.libero.it

Infatti! Ed è anche una soluzione molto flessibile.
Si può anche caricare l'intero set delle risorse da 
dll (utile per cambiare la lingua a run time p. es.)
	// Si vogliono utilizzare le risorse della DLL
	typedef BOOL (EXPGINST) (HINSTANCE*);
	HINSTANCE hInstance, dllhin;
	EXPGINST *pFunc;
	VERIFY(hInstance = ::LoadLibrary(m_path1));
	VERIFY(pFunc = (EXPGINST*) ::GetProcAddress((HMODULE) hInstance,
"ExportGlobInstance"));
	pFunc(&dllhin);
	hInstResourceClient = AfxGetResourceHandle();
	AfxSetResourceHandle(dllhin);
	// escludendo la prossima riga si esclude di usare le risorse dell'EXE/
        //AfxSetResourceHandle(hInstResourceClient);
JJ
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Lorenzo
OK! E' esattamente cio' che cerco: le risorse fuori dall'eseguibile.
Tuttavia non sono ancora riuscito a trovare un metodo, forse mi tocca
rinunciarci :(
pazienza...
