将Int转换为LPCWSTR

dda*_*cot 0 c++ winapi

我有一个功能,我得到显示分辨率.我提出了一个想法,但结果只是一些正方形.

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;
}
Run Code Online (Sandbox Code Playgroud)

我正在从MessageBox调用此函数

MessageBox(NULL, GetDispRes(hWnd) , TEXT("TEST"), NULL);
Run Code Online (Sandbox Code Playgroud)

这是输出:

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

我的问题是,是什么导致了这个输出?有什么其他方法可以实现这一目标?(将int转换为LPWCSTR)?谢谢.

Mat*_*247 6

您的问题很可能是您返回一个在函数外无效的指针(LPCWSTR),因为保存数据的对象(r​​ess)已被破坏.因此,您应该更改函数以返回std :: wstring并在需要的地方调用.c_str()(在创建消息框时):

std::wstring res = GetDispRes(hWnd);
MessageBox(NULL, res.c_str() , TEXT("TEST"), NULL);
Run Code Online (Sandbox Code Playgroud)