|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
[c++] inserire immagini in file exe
sto realizzando un programma in c++, dovrei inserire un'imaggine in un file exe e appena si clicca sul file exe l'immagine deve venire estratta nella cartella corrente.
ho creato il file risorsa con questa sintassi: img BITMAP "1.bmp" ma non so come procedere. mi sapete aiutare ![]() |
![]() |
![]() |
![]() |
#2 | |
Registered User
Iscritto dal: Jul 2007
Messaggi: 915
|
Quote:
Non credo sia possibile fare una cosa del genere... |
|
![]() |
![]() |
![]() |
#3 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
FindResource LoadResource LockResource poi per scrivere tutta la roba nel file usa delle comunissime CreateFile/WriteFile oppure fopen/fwrite. per chiudere il file naturalmente CloseHandle oppure fclose. |
|
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
![]() |
![]() |
![]() |
#5 |
Registered User
Iscritto dal: Jul 2007
Messaggi: 915
|
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
Quote:
![]() ma ho un problema con la funzione HRSRC FindResource(HMODULE hModule, LPCTSTR lpName, LPCTSTR lpType); il file h lho chiamato img.h, l'immagine da caricare lho chiamata foto. ho provato a definire la funzione cosi' HRSRC FindResource(img,foto,RT_BITMAP); ma nn va. scusate ho iniziato da poco con il c++.. ![]() |
|
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
FindResource al primo parametro nel tuo caso vuole NULL perché devi prendere la risorsa dal tuo file eseguibile; al secondo invece devi passare l'identificatore numerico della risorsa scritto come stringa e preceduto da un #, per esempio "#258". infine al terzo parametro devi passare RT_BITMAP.
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Questa funzione che ho fatto serve per salvare una risorsa su un file:
Codice:
BOOL SaveResourceToFile (HMODULE hModule, LPCSTR lpName, LPCSTR lpType, LPCSTR lpszFilename) { HRSRC hRsrc; HGLOBAL hGlobal; DWORD dwSize, dwWritten; LPVOID lpData; HANDLE hFile; BOOL bRet; if ((hRsrc = FindResource (hModule, lpName, lpType)) == NULL) return FALSE; if ((dwSize = SizeofResource (hModule, hRsrc)) == 0) return FALSE; if ((hGlobal = LoadResource (hModule, hRsrc)) == NULL) return FALSE; if ((lpData = LockResource (hGlobal)) == NULL) { FreeResource (hGlobal); return FALSE; } if ((hFile = CreateFile (lpszFilename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) { FreeResource (hGlobal); return FALSE; } bRet = WriteFile (hFile, lpData, dwSize, &dwWritten, NULL) && dwWritten == dwSize; CloseHandle (hFile); FreeResource (hGlobal); return bRet; } nameID BITMAP filename nel file eseguibile in realtà non ci sarà l'header iniziale di 14 bytes della immagine. Per questo motivo, se l'obiettivo è solamente quello di estrarre una risorsa per salvarla su file, la cosa migliore da fare è quella di assegnargli un tipo di risorsa custom, es MYBMP o qualunque altra cosa. Naturalmente l'header iniziale si potrebbe anche rigenerare facilmente (sono pochi dati) e quindi scriverlo all'inizio del file prima di scrivere la risorsa. Ma la funzione che ho postato sarebbe da rivedere, in quanto adesso è "generica".
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
ok grazie a tutti
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:43.