2013-01-31 124 views
-1
#include <iostream> 
#include <windows.h> 
using namespace std; 

int main(){ 
    LPWSTR test = L"C:/aizen.png"; 
    int result = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, test, SPIF_UPDATEINIFILE); 
    if(result) 
     cout << "Wallpaper set!"; 
    else 
     cout << "NOOOOO!" << result; 
    cin >> result; 
    return 0; 
} 

非常簡單的代碼,但結果返回0.我做錯了什麼?SystemParametersInfo返回0

+3

您可以嘗試'GetLastError()'以查明有什麼問題 –

+0

[The docs](http://msdn.microsoft.com/en-us/library/windows/desktop/ms724947(v = vs.85) .aspx)say「** Note **當使用SPI_SETDESKWALLPAPER標誌時,SystemParametersInfo總是返回TRUE。 –

+1

@Carl文檔講述了一個偉大的大謊! –

回答

3

做什麼documentation說,並致電GetLastError找出錯誤背後的原因。

一些可能的原因映入腦海:

  • SystemParametersInfo不喜歡正斜槓作爲分隔符。
  • 系統不喜歡.png文件的壁紙。
  • 該文件不存在。
  • 您有ANSI/Unicode編碼不匹配。
  • 您無權修改壁紙。

真的,名單是無止境的。所以讓系統告訴你。


注意的是,文件說:

當使用SPI_SETDESKWALLPAPER標誌,SystemParametersInfo總是返回TRUE

但這是一個偉大的大謊言。調用該函數非常簡單,通過SPI_SETDESKWALLPAPER,並接收FALSE作爲回報。

+0

GetLastError()返回2. – jzeus

+0

這意味着找不到文件,但文件在那裏! – jzeus

+0

用反斜槓替換'/''\\' –

0

不知道我們的信息。

該返回值表示呼叫失敗。您需要致電GetLastError()以獲取有關原因的信息。

+0

GetLastError()返回2(文件未找到),但他的文件在那裏! – jzeus