![TranslateKey](https://celebpanda.com/wp/wp-content/uploads/2021/05/TranslateKey.jpg)
現在の入力言語と制御キーの状態を考慮して、仮想キーコードによってUnicode文字を返します。
TranslateKey
short TranslateKey(
int key_code // Unicode文字変換するキーコード
);
- 引数
引数名 | 初期値 | I/O | 詳細 |
key_code | - | IN | Unicode文字変換するキーコード |
- 戻り値
変換が成功した場合のUnicode文字を返し、エラーの場合は-1を返します。
- その他
この関数は、Win32 APIのToUnicodeEx()を使用して、ユーザーが押したキーをUnicode文字に変換します。
ToUnicodeEx()がトリガーされない(たとえばSHIFTキー等を渡した)場合エラーが発生する場合があります。
- サンプルソース
//+------------------------------------------------------------------+
//| チャートイベント
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{
if ( id == CHARTEVENT_KEYDOWN ) { // キーボードのボタン押下判定
short temp_unicode = TranslateKey( (int)lparam ); // 押されたキーのコードを変換
if ( temp_unicode > 0 ) {
printf( "変換成功。押されたキー:%c 押されたキーコード:0x%x 変換したコード0x%x"
, lparam ,lparam , temp_unicode );
} else {
printf( "変換失敗。押されたキー:%c 押されたキーコード:0x%x" , lparam , lparam );
}
}
}
- 結果
変換成功。押されたキー:A 押されたキーコード:0x41 変換したコード0x61
変換成功。押されたキー:S 押されたキーコード:0x53 変換したコード0x73
変換成功。押されたキー:D 押されたキーコード:0x44 変換したコード0x64
変換成功。押されたキー:F 押されたキーコード:0x46 変換したコード0x66
変換失敗。押されたキー:(Shiftキー) 押されたキーコード:0x10
変換失敗。押されたキー:%(左矢印キー) 押されたキーコード:0x25
変換失敗。押されたキー:'(右矢印キー) 押されたキーコード:0x27