1

当我使用此代码时

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

我收到以下错误

C2664 'int GetKeyNameTextW(LONG,LPWSTR,int)':无法将参数 2 从 'char [128]' 转换为 'LPWSTR'

是这样NameBuffer说的:

错误:“char*”类型的参数与“LPWSTR”类型的参数不兼容

有小费吗?

4

1 回答 1

2

您已UNICODE定义,这意味着您的所有函数和TCHAR默认LPTSTR字符(wchar_t)。

char这意味着您不能在没有特别注意的情况下使用窄字符串(使用)。

有一个简单的解决方案,那就是显式调用函数的窄字符版本:GetKeyNameTextA.

另一种解决方案是停止使用char并更改为TCHAR相关类型,并将T宏用于字符串文字。

您可能想在 Windows API 中阅读更多关于 UNICODE 的信息。

于 2016-03-31T12:28:51.350 回答