当我使用此代码时
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 in the Windows API的更多信息。