LPCTSTR
определяется следующим образом:
#ifdef UNICODE
typedef const wchar_t* LPCTSTR;
#else
typedef const char* LPCTSTR;
#endif
std::string::c_str()
возвращает только const char*
.Вы не можете конвертировать const char*
напрямую в const wchar_t*
.Обычно компилятор будет жаловаться на это, но с приведением LPCTSTR
вы в конечном итоге заставите компилятор замолчать по этому поводу.Так что, конечно, это не работает так, как вы ожидаете во время выполнения.Чтобы построить то, что у вас есть в вашем вопросе, вы, вероятно, хотите что-то вроде этого:
// See Felix Dombek's comment under OP's question.
#ifdef UNICODE
typedef std::wostringstream tstringstream;
#else
typedef std::ostringstream tstringstream;
#endif
int volumeLevel = 6;
tstringstream stros;
stros << volumeLevel;
::MessageBox(plugin.hwndParent, stros.str().c_str(), L"", MB_OK);