C ++ Visual Studio ошибка C2664

Когда я использую этот код

if (GetKeyNameText(Key << 16, NameBuffer, 127))
{
KeyName = NameBuffer;
GoodKeyName = true;
}

Я получаю следующую ошибку

C2664 ‘int GetKeyNameTextW (LONG, LPWSTR, int)’: невозможно преобразовать аргумент
2 от ‘char [128]’ до ‘LPWSTR’

NameBuffer говорит это:

Ошибка: аргумент типа «char *» несовместим с параметром типа
«LPWSTR»

Какие-нибудь советы?

0

Решение

У тебя есть UNICODE определены, что означает, что все ваши функции и TCHAR а также LPTSTR по умолчанию широкий персонажи (wchar_t).

Это означает, что вы не можете использовать узко-символьную строку (используя charбез особого ухода.

Существует простое решение, и оно заключается в явном вызове узкополосной версии функции: GetKeyNameTextA,

Другое решение состоит в том, чтобы прекратить использование char и изменить на TCHAR и связанные типы, и использовать T макрос для строковых литералов.

Возможно, вы захотите узнать больше о UNICODE в Windows API.

2

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector