Macro A2W для преобразования Std :: String в LPWSTR по -прежнему требует users_conversion [Duplicate]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Macro A2W для преобразования Std :: String в LPWSTR по -прежнему требует users_conversion [Duplicate]

Сообщение Anonymous »

Я работаю с приложением Win32, где мне приходится часто преобразовать std :: string в lpwstr .
Я решал на a2w (str.c_str ()) , который работает, но есть несколько вопросов:
(1)
Использует_Коверсию в начале каждой функции, которая использует этот макрос, который является болью. Есть много функций, и я не хочу помнить, чтобы делать это каждый раз. Этот поток указывает, что вам больше не нужно делать users_conversion с ATL 7.0.

Код: Выделить всё

void myFunc() {
// USES_CONVERSION; if commented out, getting error below
..
COMBOBOXEXITEM item;
item.pszText = A2W(str.c_str());
}
< /code>
A2W(lpa): ( ((_lpa = lpa)...: Identifier _lpa is undefined

Я попробовал оба этих заголовка. У меня нет ATL 7.0, или я что -то упускаю? < /P>

Код: Выделить всё

#include 
#include 
< /code>
(2)
Sometimes I also get this warning on A2W
, от которого я хочу избавиться,

Код: Выделить всё

'_alloca' indicates failure by raising a stack overflow exception. Consider using '_malloca' instead.
< /code>
One note: If I use CA2W
или atl :: ca2w В любом из этих случаев мои строки, показанные в управлении Windows, становятся табличками, как показано ниже. Только A2W работает, а не CA2W .


Подробнее здесь: https://stackoverflow.com/questions/795 ... conversion
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»