キーコードのUniCodeを取得 TranslateKey 関数

関数

共通関数

TranslateKey 関数

 この関数は、現在の入力言語とコントロールキーの状態を考慮して、仮想キーコードから Unicodeを取得します。

 この関数で引数として使用されるキーコードの値は 10進数です。仮想キーコードの説明ページでは 16進数で表示されているので値を入力して結果を得る場合は 10進数に変換する必要があります。

 また、得られる結果は、Unicode(10進数)です。Unicode文字に変換する場合は ShortToString関数を使用します。 

データ型と構成・戻り値

short TranslateKey(①);

 戻り値は、変換が成功した場合は Unicodeの値(10進数)、それ以外は -1が返されます。

 この関数は、ToUnicodeExを使用して、ユーザーが押したキーを Unicodeに変換します。ToUnicodeEx がトリガーされない場合 (たとえば、SHIFTキーを受信しようとした場合)、エラーが発生します。

引数 [1]

 TranslateKey関数は 1個の引数で構成されます。


引数名データ型単位初期値説明
key_codeintキーコード(10進数)。キーコードはこちらの16進数のコードを10進数に変換して使用してください。変換方法はこちらを参考にしてください。

使用例

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に変換できないキーコードになります。その他の結果についてはこちらの表と比較してください。

タイトルとURLをコピーしました