void AnsiString Problem
-
Hallo, ich bins immer noch mit meiner Wallpaper macherei.
Bei mir sind die Wallpaper nun doch etwas angestiegen. Und damit ich weniger Geschäft habe, will ich nur noch den Dateinamen ändern.
AnsiString Wallpaper = "Wallpaper eMule.jpg"; SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, TEXT("C:\\Windows\\" + Wallpaper), SPIF_SENDCHANGE);
Fehlermeldung:
Type mismatch in parameter 'pvParam' (wanted 'void *', got 'AnsiString')Wieso will denn der "void" und wie stelle ich das an. Möchte mich eingentlich nicht unnötig komplizieren!
der Text soll da einfach eingefügt werden. Wüsste aber im Moment nicht wie ich das konvertieren kann, bzw eine andere Methode verwenden
Danke für die Hilfe
-
Erstmal: void != void *!
Die Funktion erwartet ein void* und du gibst ihm ein AnsiString. Ein void* ist ein Zeiger auf ein Objekt eines beliebigen Typens. Normalerweise nimmt man dann für Strings char*. Zur Umwandlung von AnsiString zu char* siehe FAQ.
-
Danke vorerst.
Habe das nun mit void *Wallpaper versucht und mit char *
bei mit der gelichen Fehlermeldung:
Invalid pointer addition
'Wallpaper' is assigned a value that is never used*hmm*
---
Umwandlung von AnsiString zu char*
---
ok, das wusste ich auch so, jedoch kann ich auch gleich char * verwenden. Dafür muss ich es nicht erst umwandeln :p
-
char* buffer = new char[Wallpaper.Length()+ 1];
strcpy(buffer, Wallpaper.c_str());(void*) buffer verwenden
-
Warum einfach, wenn's auch umstandlich geht, oder wie? Ausserdem das delete vergessen!
AnsiString Wallpaper = "C:\\Windows\\Wallpaper eMule.jpg"; SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Wallpaper.c_str(), SPIF_SENDCHANGE); // oder AnsiString Wallpaper = "Wallpaper eMule.jpg"; SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, ("C:\\Windows\\" + Wallpaper).c_str(), SPIF_SENDCHANGE);
-
Hi,
mit funktion SystemParametersInfo(...) geht nicht *.jpg, *.gif,....
nur *.bmpsieh mal...
JPG nach BMPmit SystemParametersInfo
char WinPath[MAX_PATH]; GetWindowsDirectory(WinPath, MAX_PATH); AnsiString Wallpaper = AnsiString(WinPath) + "\Wallpaper.bmp"; SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Wallpaper.c_str(), SPIF_SENDCHANGE);
-
Original erstellt von Jansen:
Warum einfach, wenn's auch umstandlich geht, oder wie? Ausserdem dasdelete vergessen!Das hatte schon seinen Sinn, weil er das sonst vieleicht auch mal so verwendet wenn er den pointer auf char nicht in der selben Zeile verwendet und da der ja Persistent ist sich sonst in den Fuß schießt...
Und das delete habe ich mal vorausgesetzt...[ Dieser Beitrag wurde am 23.01.2003 um 17:59 Uhr von etechniker editiert. ]
-
AnsiString Wallpaper = "Wallpaper eMule.jpg";
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, ("C:\\Windows\" + Wallpaper).c_str(), SPIF_SENDCHANGE);Genau das wars. Sorry, aber auf diese dämlichen Klappern bin ich nicht gekommen. Ich glaub soweit bin ich nicht, mit meiner mentalen Kraft *g*
Ich weiß dass jpgs nicht gehen. Hab ja ich nicht den ganzen Code gepostet, wäre ja nunötig. Zwischen den Zeilen wandle ich ja das jpg nach bmp um. So wie aus dem Thread von Neewb, der wie ihr erkennen könnte - ich bin.
Deswegen brauche ich ja auch nur den Dateinamen!! Der Path ändert sich ja von JPC und BMP!! Konntet ihr aber ja nicht wissen.
Bedanke mich recht herzlich für die tolle, kompetente und highend schnelle Hile
-
Original erstellt von etechniker:
weil er das sonst vieleicht auch mal so verwendet wenn er den pointer auf char nicht in der selben Zeile verwendetWorauf allerdings auch im bereits erwähnten (und vom Fragesteller zur Kenntnis genommenen) FAQ-Beitrag hingewiesen wird.