Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915

Отличие LPWSTR от LPOLESTR

09.02.2020, 11:43. Показов 2619. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

Подскажите пожалуйста в чем отличие LPWSTR от LPOLESTR ?

Судя по определениям:
C++
1
2
LPWSTR:
typedef wchar_t * LPWSTR, * PWSTR;
C++
1
2
LPOLESTR:
typedef [string] wchar_t * LPOLESTR;
LPWSTR - это LPOLESTR и наоборот. То есть и LPWSTR и LPOLESTR - есть указатель на массив wchar_t.
Если так, то зачем вводить два разных типа, с одним и тем же смыслом ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.02.2020, 11:43
Ответы с готовыми решениями:

LPWSTR и тд
Приветствую. Как сконвертировать переменные LPWSTR и LPSTR в обычную строку (std::string или char) и наоборот ?

String в LPWSTR
Как преобразовать String в LPWSTR.

LPWSTR в char*
Доброго времени суток! Совсем запутался в этих строках. Получаю строку из text-box'a. Хочу проверить, является ли она числом.. для этого...

5
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
09.02.2020, 12:29
Цитата Сообщение от Optimus11 Посмотреть сообщение
LPWSTR - это LPOLESTR и наоборот. То есть и LPWSTR и LPOLESTR - есть указатель на массив wchar_t.
Если так, то зачем вводить два разных типа, с одним и тем же смыслом ?
Потому что это типы из двух разных библиотек - WinApi и OLE (RPC), поэтому вполне логично, что они имеют разные имена. То, что типы совпадают - не более чем случайность - тупо не понадобилось. Вполне могли бы оказаться разными.

Ну и, как ты заметил, у LPOLESTR есть модификатор [string] или __RPC_string. Не знаю толком где конкретно это используется, но информация довольно полезная для rpc-вызовов.

Рекомендую обратить внимание ещё на один тип строки - BSTR, который тоже wchar_t *. Вот с ним надо аккуратно.
2
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
09.02.2020, 12:57  [ТС]
Спасибо!

Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Рекомендую обратить внимание ещё на один тип строки - BSTR, который тоже wchar_t *. Вот с ним надо аккуратно.
Если быть совсем точным, то BSTR состоит не из wchar_t, а из OLECHAR. Просто, как я понимаю olechar на большинства системах совпадает с wchar_t и можно на этот счет не парится.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
09.02.2020, 13:11
Цитата Сообщение от Optimus11 Посмотреть сообщение
Если быть совсем точным, то BSTR состоит не из wchar_t, а из OLECHAR. Просто, как я понимаю olechar на большинства системах совпадает с wchar_t и можно на этот счет не парится.
Нет. BSTR - это не сишная строка, а объект у которого по смещению -4 (или -2) лежит размер строки.
1
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
16.02.2020, 13:36  [ТС]
А подскажите пожалуйста, вот есть некая функция, принимает на вход переменную LPOLESTR.

Так LPOLESTR - это указатель на wchar_t, то сначала думается, что можно передать в функцию переменную типа <LPOLESTR вот таким образом:

Условно:
C++
1
func_api(L"Мой Аргумент")
Однако L"Мой Аргумент" - это const wchar_t и компилятор выдаст ошибку о несовместимости const wchar_t и LPOLESTR.

Но если сделать так, то все работает:
C++
1
2
3
wchar_t my_wchar[] = L"Мой Аргумент";
 
func_api(my_wchar)
И работает вот в таком варианте:
C++
1
func_api((LPOLESTR)L"Мой Аргумент")
То есть это некое, как я понял приведение к LPOLESTR, ноя не могу понять, что внутри этого приведения происходит ? Как оно работает в данном случае?
Как то из const wchar_t - просто в wchar_t преобразовывается ?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
16.02.2020, 13:44
Цитата Сообщение от Optimus11 Посмотреть сообщение
То есть это некое, как я понял приведение к LPOLESTR, ноя не могу понять, что внутри этого приведения происходит ? Как оно работает в данном случае?
Как то из const wchar_t - просто в wchar_t преобразовывается ?
Потому что ты явно преобразовал его к неконстантной строке - (LPOLESTR). Там делать можно. Плохо, конечно, но не фатально.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2020, 13:44
Помогаю со студенческими работами здесь

LPWSTR и GetWindowText
Итак, есть такой кусок кода: LPWSTR tmp; HWND hwnd = (HWND)pHandle; GetWindowText(hwnd, tmp, GetWindowTextLength(hwnd) + 1); ...

Считывание LPWSTR из консоли
У меня есть проблемная строка кода, вот она: ExpandEnvironmentStringsW(L&quot;%windir%\\system32\\calc.exe&quot;, ImagePath, MAX_PATH-1); Я уже...

Преобразование char в LPWSTR
Всем привет. Пишу программу, для получения данных из com-порта. Уже получилось открыть порт и получить данные. Теперь цель получить имя...

Regex для LPWSTR
Доброе время суток , подскажите как использовать regex для LPWSTR? Вроде бы LPWSTR это тоже самое что wchar_t* но почему то методы для...

Вывод переменной LPWSTR
Помогите новичку в WinAPI static LPWSTR str; PAINTSTRUCT paint; RECT rect; switch (uMsg){ case WM_COMMAND: if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru