当我使用这段代码时
if (GetKeyNameText(Key << 16, NameBuffer, 127))
{
KeyName = NameBuffer;
GoodKeyName = true;
}
我得到以下错误
C2664 'int GetKeyNameTextW(LONG,LPWSTR,int):无法将参数2从'char 128‘转换为'LPWSTR’
NameBuffer
说:
错误:"char*“类型的参数与"LPWSTR”类型的参数不兼容
有小费吗?
发布于 2016-03-31 12:28:51
您已经定义了UNICODE
,这意味着所有函数以及TCHAR
和LPTSTR
都默认为宽字符(wchar_t
)。
这意味着如果没有特别的注意,就不能使用窄字符串(使用char
)。
有一个简单的解决方案,就是显式地调用函数的窄字符版本:GetKeyNameTextA
。
另一种解决方案是停止使用char
并更改为TCHAR
和相关类型,并对字符串文本使用T
宏。
您可能想了解更多关于Windows API中的UNICODE的内容。
https://stackoverflow.com/questions/36333429
复制相似问题