PDA

View Full Version : [c++]cambiare sfondo


bouncey2k
26-01-2006, 15:21
se non sbaglio la chiave di registro per cambiare lo sfondo è in:
HKEY_CURRENT_USER > Control Panel > Desktop > ConvertedWallpaper

come posso cambiare lo sfondo (in c++) mettendone uno personalizzato?
mi servirebbe in due modi:
1) specificando il percorso di una jpg esistente all'interno del pc
2) specificando il nome della jpg che sta nella cartella del mio progetto

grazie..

andbin
26-01-2006, 22:34
se non sbaglio la chiave di registro per cambiare lo sfondo è in:
HKEY_CURRENT_USER > Control Panel > Desktop > ConvertedWallpaper

come posso cambiare lo sfondo (in c++) mettendone uno personalizzato?
mi servirebbe in due modi:
1) specificando il percorso di una jpg esistente all'interno del pc
2) specificando il nome della jpg che sta nella cartella del mio progetto
Esempio:
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, "c:\\temp\\immagine.bmp", SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);

bouncey2k
26-01-2006, 23:56
non capisco da dove hai preso quella chiave di registro..
potresti inserirmelo all'interno di un codice base?

per il secondo punto invece come posso fare? forse mi sono spiegato male io..
Nel primo caso volevo che avviando l'exe mi cambiasse lo sfondo prendendo un'immagine preesistente sul pc (da un percorso). Nel secondo caso volevo che una volta avviato l'eseguibile mi metteva come sfondo un'immagine che avevo inserito nell'eseguibile.. mi spiego meglio. Creo l'eseguibile e imposto una certa immagine come sfondo. Se avvio l'eseguibile su un altro PC lo sfondo mi si deve cambiare ugualemente perché l'immagine non è presa da un percorso, ma è stata inserita precedentemente nell'exe.. :D che casino

Fenomeno85
27-01-2006, 10:55
cerca che c'è una discussione che avevo aperto su questo problema ;)


~§~ Sempre E Solo Lei ~§~

kk3z
27-01-2006, 13:28
non capisco da dove hai preso quella chiave di registro..
Quale chiave? E' una funzione: SystemParametersInfo() (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/systemparametersinfo.asp), che non credo accetti file .jpg, quindi dovrai aprire il file jpg e salvarlo come file bmp
:)

andbin
27-01-2006, 14:54
Metto molto volentieri a vostra disposizione il sorgente di una applicazione Win32 console che ho sviluppato io per poter impostare lo sfondo del desktop.

Il sorgente può essere compilato sia in modalità ANSI che in UNICODE.
La funzione SetDesktopWallpaper presente nel sorgente è facilmente riutilizzabile e consente di impostare non solo l'immagine di sfondo ma anche la sua disposizione cioè immagine centrata ("centered"), affiancata ("tiled"), allungata ("stretched") e posizionata tramite offset X/Y.

andbin
27-01-2006, 15:08
non capisco da dove hai preso quella chiave di registro..
potresti inserirmelo all'interno di un codice base?Ho postato un intero sorgente "C". ;)

per il secondo punto invece come posso fare? forse mi sono spiegato male io..
Nel primo caso volevo che avviando l'exe mi cambiasse lo sfondo prendendo un'immagine preesistente sul pc (da un percorso). Nel secondo caso volevo che una volta avviato l'eseguibile mi metteva come sfondo un'immagine che avevo inserito nell'eseguibile.. mi spiego meglio. Creo l'eseguibile e imposto una certa immagine come sfondo. Se avvio l'eseguibile su un altro PC lo sfondo mi si deve cambiare ugualemente perché l'immagine non è presa da un percorso, ma è stata inserita precedentemente nell'exe.. :D che casinoL'immagine, per poter essere impostata come sfondo del desktop, deve per forza essere in un file a se stante. Per il tipo di estensione, dipende credo dalla versione di Windows. Win95 mi sembra (se non sbaglio) che accettava solo immagini .bmp. Il mio Win2000 vedo che accetta .bmp/.gif/.jpg/.dib/.png.

Se quando dici "un'immagine che avevo inserito nell'eseguibile" intendi dire che hai creato e compilato una risorsa all'interno dell'eseguibile, penso proprio che non la puoi impostare direttamente come sfondo.
Dovresti usare le funzioni Win32 FindResource/SizeofResource/LoadResource/LockResource per leggere la risorsa, scriverla su disco come file a se stante e poi, a quel punto, impostarla come sfondo.