15 / 13 / 4
Регистрация: 16.08.2018
Сообщений: 125
1

Конвертирование std::string в LPCWSTR

09.09.2018, 08:36. Показов 1051. Ответов 4
Метки нет (Все метки)

Хелп! Я новичок в WinApi но мне понадобилось
ввести значение(Через cin) и перенести его в
C++
1
FindWindow(NULL, Суда);
поэтому подскажите способ конвертирование std::string в LPCWSTR или
предложите альтернативу.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2018, 08:36
Ответы с готовыми решениями:

Конвертация и передаче типов char* HBITMAP std::string
Здрасти уважаемые форумчани. Я уже наверное неделю мучаюсь с написанием системы контроля за...

Как в стандартную функцию WinAPI передать тип данных std::string вместо char*?
Помогите пожалуйста. Мне надо в GetDlgItemText передать std::string. Как это можно сделать?...

Не могу разобраться как обновить в std::map<std::string, вектор_структур>
Не могу разобраться как обновить вектор структур после его добавления в map без удаления и...

string & LPCWSTR
Я вызываю функцию ShellExecute. Один из параметров функции - параметры приложения....

4
2249 / 769 / 296
Регистрация: 10.02.2018
Сообщений: 1,796
09.09.2018, 09:08 2
Лучший ответ Сообщение было отмечено kcalbCube как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    // вызов функции поиска с аргументами <char>
    std::string cs("Test");
    HWND f1 = FindWindowA(0, cs.c_str());
    // вызов функции поиска с аргументами <wchar_t>
    std::wstring ws(L"Test");
    HWND f2 = FindWindowW(0, ws.c_str());
 
    // конвертация из <wchar_t> и вызов функции поиска с аргументами <char>
    char cst[128] = { 0 };
    WideCharToMultiByte(CP_ACP, 0, ws.c_str(), -1, cst, 128, 0, 0);
    HWND f3 = FindWindowA(0, cst);
    // конвертация из <char> и вызов функции поиска с аргументами <wchar_t>
    wchar_t wst[128] = { 0 };
    MultiByteToWideChar(CP_ACP, 0, cs.c_str(), -1, wst, 128);
    HWND f4 = FindWindowW(0, wst);
 
    // вызов функции поиска через макрос <FindWindow>
#ifdef UNICODE
    wchar_t wst[128];
    MultiByteToWideChar(CP_ACP, 0, cs.c_str(), -1, wst, 128);
    HWND f5 = FindWindow(0, wst);
#else
    HWND f5 = FindWindow(0, cs.c_str());
#endif // UNICODE
1
15 / 13 / 4
Регистрация: 16.08.2018
Сообщений: 125
09.09.2018, 10:21  [ТС] 3
Можешь объяснить как это изпользовать?
0
2249 / 769 / 296
Регистрация: 10.02.2018
Сообщений: 1,796
09.09.2018, 10:30 4
Цитата Сообщение от kcalbCube Посмотреть сообщение
Можешь объяснить как это изпользовать?
Это просто разные варианты, нужно выбрать тот, который больше нравится/подходит.
FindWindow - это макрос, который в зависимости от опций проекта превращается в FindWindowA или FindWindowW, которые уже являются именами функций. Обе функции можно вызывать напрямую. Если у вас есть std::string, то достаточно явно вызвать нужную функцию (FindWindowA) и передать в её аргумент массив символов. Массив символов можно получить из std::string с помощью метода c_str.
0
15 / 13 / 4
Регистрация: 16.08.2018
Сообщений: 125
09.09.2018, 12:24  [ТС] 5
Я протестировал.
Но работает как-то плохо.

Сейчас попробую пихнуть первый вариант(С f1)
Не в main в в check(В которой этот FindWindow и изпользуеться

Добавлено через 9 минут
Можешь написать функцию для конвертирования?

Вроде _CString(std::string txt) или как-то так

Добавлено через 5 минут
Так...

Как я вижу:
002A6300 - Выход при конверте "zzz"
002A2FB4 - Выход при L"zzz"

Добавлено через 20 минут
(-_\) Извиняюсь.
Всё работает нормально.
Проблема - в dll который эта программа выполняет.
Почему-то сохранилась только первая версия dll
в который только половина функционала который я пытался проверить
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2018, 12:24
Помогаю со студенческими работами здесь

std::string, std::fstream, ошибка кучи
где то начало вылетать при операции += с локальной переменной std::string. Заменил на свой qString....

Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String
Есть строка Glib::ustring, пытался её конвертировать в sf::String, и вроде бы всё работает без...

Файловый поток и std::string
добрый день сейчас меня немножко ввело в тупняк - из файлового потока(ifstream) нельзя прочитать...

Немного про std::string
Привет, читал про std::string на разных сайтах. 1. Там говорят, С++ 11 гарантирует, что...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru