1

デスクトップの壁紙を変更しようとしています。次のように使用すると、問題なく動作します。

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:\\1.jpg", SPIF_SENDCHANGE);

しかし、このように使用すると、デスクトップの壁紙が完全に黒に設定されます。

std::string s = "C:\\1.jpg";
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &s, SPIF_SENDCHANGE);

を使用してさらに情報を取得しようとしましGetLastError()たが、戻り値は 0 です。.png ファイルも使用しようとしましたが、何も変わりません。

私が間違っていることはありますか?

4

1 に答える 1

6

これを試して:

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)s.c_str(), SPIF_SENDCHANGE);

このSystemParametersInfo関数はポインタをパスとして受け入れずstd::string、null で終わる文字配列を受け入れます。のc_str()メソッドがstd::string提供するものです。

于 2016-01-10T20:58:21.167 に答える