Преобразование Int в LPCWSTR

0

У меня есть функция, в которой я получаю разрешение дисплея. Я придумал идею, но результат - всего лишь несколько квадратов.

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)? Благодарю.

Теги:
winapi

1 ответ

6
Лучший ответ

Вероятно, ваша проблема заключается в том, что вы возвращаете указатель (LPCWSTR), который недействителен вне функции, поскольку объект, содержащий данные (ress), уже был разрушен. Поэтому вы должны изменить свою функцию, чтобы вернуть std :: wstring и вызвать.c_str() там, где это необходимо (при создании окна сообщения):

std::wstring res = GetDispRes(hWnd);
MessageBox(NULL, res.c_str() , TEXT("TEST"), NULL);
  • 0
    спасибо, что сработало!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню