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.

もう 1 つの解決策は、使用を中止しておよび関連する型にchar変更し、文字列リテラルにマクロを使用することです。TCHART

Windows API の UNICODEについて詳しく読むことをお勧めします。

于 2016-03-31T12:28:51.350 に答える