2013-10-11 85 views
0

我有一個功能,我得到的顯示分辨率。我想出了一個想法,但結果只是一些方塊。Int轉換爲LPCWSTR

LPCWSTR GetDispRes(HWND hWnd) 
{ 
    HMONITOR monitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST); 
    MONITORINFO info; 
    info.cbSize = sizeof(MONITORINFO); 
    GetMonitorInfo(monitor, &info); 
    int arr[2]; 
    arr[0] = info.rcMonitor.right - info.rcMonitor.left; 
    arr[1] = info.rcMonitor.bottom - info.rcMonitor.top; 
    LPCWSTR a; 
    std::wstring s = std::to_wstring(arr[0]); 
    std::wstring d = std::to_wstring(arr[1]); 

    std::wstring ress = s + d; 
    a = (LPCWSTR)ress.c_str(); 

    return a; 
} 

,我從一個MessageBox

MessageBox(NULL, GetDispRes(hWnd) , TEXT("TEST"), NULL); 

調用這個函數,這裏是輸出:

http://s7.directupload.net/images/131011/fw9j26c9.png

我的問題是,是什麼導致了這種輸出?還有什麼其他方法可以實現這一目標? (將int轉換爲LPWCSTR)?謝謝。

回答

6

您的問題很可能是您正在返回一個指針(LPCWSTR),該指針在函數之外無效,因爲持有數據的對象(r​​ess)已被破壞。 所以,你應該改變你的函數返回的std :: wstring的,並呼籲.c_str()在你需要它(在創建消息框):

std::wstring res = GetDispRes(hWnd); 
MessageBox(NULL, res.c_str() , TEXT("TEST"), NULL); 
+0

感謝,這工作! – ddacot