У меня есть функция, в которой я получаю разрешение дисплея. Я придумал идею, но результат - всего лишь несколько квадратов.
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)? Благодарю.
Вероятно, ваша проблема заключается в том, что вы возвращаете указатель (LPCWSTR), который недействителен вне функции, поскольку объект, содержащий данные (ress), уже был разрушен. Поэтому вы должны изменить свою функцию, чтобы вернуть std :: wstring и вызвать.c_str() там, где это необходимо (при создании окна сообщения):
std::wstring res = GetDispRes(hWnd);
MessageBox(NULL, res.c_str() , TEXT("TEST"), NULL);