Когда я использую этот код
if (GetKeyNameText(Key << 16, NameBuffer, 127))
{
KeyName = NameBuffer;
GoodKeyName = true;
}
Я получаю следующую ошибку
C2664 ‘int GetKeyNameTextW (LONG, LPWSTR, int)’: невозможно преобразовать аргумент
2 от ‘char [128]’ до ‘LPWSTR’
NameBuffer
говорит это:
Ошибка: аргумент типа «char *» несовместим с параметром типа
«LPWSTR»
Какие-нибудь советы?
У тебя есть UNICODE
определены, что означает, что все ваши функции и TCHAR
а также LPTSTR
по умолчанию широкий персонажи (wchar_t
).
Это означает, что вы не можете использовать узко-символьную строку (используя char
без особого ухода.
Существует простое решение, и оно заключается в явном вызове узкополосной версии функции: GetKeyNameTextA
,
Другое решение состоит в том, чтобы прекратить использование char
и изменить на TCHAR
и связанные типы, и использовать T
макрос для строковых литералов.
Возможно, вы захотите узнать больше о UNICODE в Windows API.
Других решений пока нет …