Ещё один “Cannot convert const char* to LPCWSTR”

266
13 сентября 2017, 13:55

Есть самописная функция, лежащая в файое библиотеки, подключенном к главному:

HWND CreateEditor
(
    TCHAR* tText,
    HWND hParent,
    POINT pCoords = {0, 0},
    SHAPE Size = {200, 50},
    DWORD dStyle = WS_CHILD | WS_VISIBLE | SS_LEFT
)
{
    return CreateWindow("edit", tText, dStyle, pCoords.x, pCoords.y, Size.width, Size.height, hParent, (HMENU)NULL, hInstance, NULL);
}

В главном же файле объявлено:

#define _UNICODE

Компилятор ругается на 10ю строку так:

"Cannot convert const char* to LPCWSTR for argument 2 to HWND__* CreateWindowExW(DWORD, LPCWSTR, LPCTWSTR, int, int, int, int, HWND, HMENUHINSTANCE, LPVOID)"

Пожалуйста, помогите(

Answer 1

LPCWSTR это синоним для CONST WCHAR *, об этом можно узнать на странице msdn. В терминах натурального C++ это будет const wchar_t *. Чтобы строковый литерал был совместимым с упомянутым типом нужно добавить префикс L, т.е. в вашем случае использовать L"edit". Можно ещё обойтись WinAPI макросом _T, который учитывает наличие юникодности проекта. В этом случае можно использовать запись _T("edit").

Дополнительную информацию вы можете получить в связанном вопросе: char* to LPWSTR

READ ALSO
Обращение функции к переменной типа char

Обращение функции к переменной типа char

Необходимо написать параметры и тело функции func, так чтобы строка вывода программы выглядела следующим образом: text 60Программа запускается,...

254
Обработка исключений в потоках [требует правки]

Обработка исключений в потоках [требует правки]

Помогите пожалуйста выйти из творческого тупика:

225
openCV ошибка функции распознавания

openCV ошибка функции распознавания

Пишу в Visual Studio 2017 с opencv 33

250
Шифр Цезаря для кириллицы

Шифр Цезаря для кириллицы

Здравствуйте! Появилась надобность написать программу на С++, шифрующую русские строки, считываемые из файла с кодировкой UTF-8Использую STL wstring

320