Seite 1 von 1

Eine Frage der Eleganz

Verfasst: 11. Mai 2009 18:41
von Ryu1991
Ich habe mich gefragt, ob das irgendwie schöner geht?
Ich setze hier nen Hintergrund bild, dessen Pfad ich in Files habe, aber für die Windows-funktion brauche ich ja \ als Trennzeichen statt /. Deswegen das ganze replace, und er will ein void* und kein const void*. Deshalb das Char-Array. Geth das Eleganter?

Code: Alles auswählen

QString str( Files[index].filePath());
str.replace(QString("/"), QString("\\"));
sprintf(bmp, str.toStdString().c_str());
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,bmp,SPIF_SENDCHANGE|SPIF_UPDATEINIFILE);

Verfasst: 11. Mai 2009 19:01
von Christian81
Einfacher (und auch mit non-Ascii-Zeichen im Pfad funktionierend)

Code: Alles auswählen

const QString path = QDir::toNativeSeparators( Files[index].filePath() ); 
SystemParametersInfoW(SPI_SETDESKWALLPAPER,
             0,
             (PVOID)path.utf16(),
             SPIF_SENDCHANGE|SPIF_UPDATEINIFILE);

Verfasst: 11. Mai 2009 19:10
von Ryu1991
Cool, danke, gefällt mir schon viel besser :)
Nur ne ganz dumme Frage: Was bedeutet das utf16, ich meine das muss doch für irgendwas ne abkürzung sein.

Verfasst: 11. Mai 2009 19:20
von Christian81
utf-16 ist utf-16 :)