TranslateKey 関数
この関数は、現在の入力言語とコントロールキーの状態を考慮して、仮想キーコードから Unicodeを取得します。
この関数で引数として使用されるキーコードの値は 10進数です。仮想キーコードの説明ページでは 16進数で表示されているので値を入力して結果を得る場合は 10進数に変換する必要があります。
また、得られる結果は、Unicode (10進数) です。Unicode文字に変換する場合は ShortToString関数を使用します。
データ型と構成・戻り値
short TranslateKey(①);
戻り値は、変換が成功した場合は Unicodeの値 (10進数)、それ以外は -1が返されます。
この関数は、ToUnicodeExを使用して、ユーザーが押したキーを Unicodeに変換します。ToUnicodeEx がトリガーされない場合 (たとえば、SHIFTキーを受信しようとした場合)、エラーが発生します。
引数 [1]
TranslateKey関数は 1個の引数で構成されます。
使用例
TranslateKey関数によるキーボードキーの取得
OnChartEvent関数とTranslateKey関数を使用して、押したキーボードの文字を取得します。合わせて、その時のキーコードと Unicodeを 16進数で取得します。カッコ内の値は 10進数です。
キーボードは「a」「b」「1」「2」「Shift」の順番で押します。
コード
// TranslateKey関数によるストラテジーテスター結果の取得
#property strict
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
{
if(id == CHARTEVENT_KEYDOWN) {
short sym = TranslateKey((int)lparam);
if(sym > 0) {
Print("キーコード:", StringFormat("%.X", lparam), "(", lparam,") 押したキーのUnicode:", StringFormat("%.X", sym), "(", sym, ") 押したキー:", ShortToString(sym));
} else {
Print("キーコード:", StringFormat("%.X", lparam), "(", lparam,") Unicodeに変換できないキーコードです");
}
}
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
「Shift」キーは、Unicodeに変換できないキーコードになります。その他の結果についてはこちらの表と比較してください。