Проблемы с C ++ FindWindow ()

Я пытаюсь заставить функцию найти дескриптор окна. Я делал это много раз до следующего пути:

HWND windowHandle
windowHandle = FindWindow(NULL, "NameOfWindowIAmLookingFor");

Однако затем я попытался сделать следующее:

string myString = "NameOfWindowIAmLookingFor";
HWND windowHandle
windowHandle = FindWindow(NULL, myString);

и появляется следующая ошибка:

error: cannot convert 'std::string {aka std::basic_string<char>)' to 'LPCSTR {aka const char*} ' for argument '2' to 'HWND__* FindWindowA(LPCSTR, LPCSTR)';

У меня есть другая функция, которая присваивает myString значение, поэтому я хочу передать это значение в качестве переменной в функцию FindWindow (), но эта ошибка появляется, и я не понимаю, что происходит.

Вопрос :: Почему я получаю эту ошибку и как я могу поместить строковую переменную в функцию FindWindow ()?

1

Решение

Почему я получаю эту ошибку и как я могу поместить строковую переменную в функцию FindWindow ()?

Сообщение об ошибке компилятора довольно ясно. FindWindow() функция ожидает const char* в качестве второго параметра, который std::string нет.
Чтобы получить (const) указатель на необработанные данные массива символов, управляемые std::string экземпляр использовать c_str() метод:

FindWindow(NULL, myString.c_str());
3

Другие решения

Проблема в том, что вы пытаетесь передать объект типа std::string в функцию, требующую LPCSTR (который является псевдонимом для const char*), но std::string неявно преобразуется в const char* и поэтому вы получаете сообщение об ошибке.
Чтобы заставить функцию работать, вам нужно передать строку в стиле C (const char*), что вы делаете, передавая myString.c_str() вместо myString,

0

По вопросам рекламы [email protected]