テキストエディットコントロールで入力された文字列を数値にする方法
VST GUIで実装したテキストエディットコントロールをから、パラメーターの値を設定する方法を説明します。
なお、VST GUIの基本的な作成方法、エディットコントロールの作成方法として下記をご理解いただいている前提で進めさせていただきます。
テキストエディットコントロールをからパラメーターの値を設定するには文字列から値に変換する変換関数を作成し、テキストエディットコントロールに設定します。
まず変換関数を作成します。
変換関数は下記のように定義します。
関数名と引数の変数名は自由ですが、引数と戻り値の型は必ず同じにする必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 |
bool MyStringToValue(UTF8StringPtr txt, float& result, CTextEdit* textEdit) { // 文字列から数値(浮動小数点)に変更 result = strtof(txt, nullptr); // パラメータに設定できる値は0.0~1.0なので範囲内にクリッピングする if (result < 0.0f) { result = 0.0f; } if (result > 1.0f) { result = 1.0f; } // 変換に成功したらtrueを返す return true; } |
上記では単純にstrtof関数を使って文字列から数値に変換しています。
変換関数の戻り値や引数は下記になります。
- StringToValueFunction関数
概要 | テキストエディットコントロールの文字列を数値に変換する関数。 | ||
---|---|---|---|
戻り値 | 型 | 概要 | |
bool | 文字列から数値への変換に成功した場合 true、失敗した場合 false | ||
引数 | 型 | 変数名 | 概要 |
UTF8StringPtr | txt | テキストエディットコントロールに設定された文字列。 | |
float& | result | 変換後の数値を代入する変数。正規化された値(0.0~1.0)にする。 | |
CTextEdit* | textEdi | 操作されたテキストエディットコントロールへのポインタ。 |
次に、作成した変換関数をテキストコントロールに設定します。
createTextEdit関数でテキストエディットを作成した後、setStringToValueFunction関数に先ほどの変換関数のポインタを渡せば設定できます。
(createTextEdit関数は「テキストエディットの実装」を参照。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
bool PLUGIN_API MyVSTGUIEditor::open(void* parent, const PlatformType& platformType) { // GUIウィンドウが開かれたときに、UIを作成する ~~ 中略 ~~ // --------------------------------------------- // ここから各コントロールの作成 CTextEdit* txtedit = (CTextEdit*)createTextEdit(1, 10, 10, u8""); txtedit->setStringToValueFunction(&MyStringToValue); ~~ 中略 ~~ // GUIウィンドウのオープンに成功した場合はtrueを返す return true; } |
以上でテキストエディットコントロールから、パラメーターの値を設定することができます。
上記以外にもVST3.6についての情報があります。下記をご参照ください。
また、質問やご指摘はコメント欄や掲示板、Twitterでいただけばとおもいます。
■掲示板
■Twitterアカウント:@vstcpp URL:https://twitter.com/vstcpp