InputString.dll

InputString.dllは文字入力機能を扱うライブラリ。 IMEも使えて便利。

もどる  トップページへ


関数

InputString.hllを参考に。

SetFont

コンポジションウィンドウ(入力してるときに出る枠とかのあれ)のフォント設定を行う。

void SetFont(int nSize, string pIName, int nWeight);

nSize

フォントサイズを指定。

pIName

フォント名を指定。

nWeight

フォントの太さを数値で指定。 ただし、0・400・700しか動かないはず(APIのCreateFontとかが確かそうなので)

とりあえずSACT2では const int FW_NORMAL = 400;
const int FW_BOLD = 700;
が定義されているのでこれを使う。

SetPos

コンポジションウィンドウの位置を設定する。

void SetPos(int nX, int nY);

nX

ウィンドウ上端からの距離。

nY

ウィンドウ左端からの距離。

Begin

入力モードを開始する。

void Begin(void);

End

入力モードを終了する。

void End(void);

OpenIME

IMEを起動する。

void OpenIME(void);

CloseIME

IMEを止める。

void CloseIME(void);

GetResultString

確定文字列を取得する。

string GetResultString(void);

バッファに確定文字列があった場合それが返り、無い場合は空白文字列が返る。

ClearResultString

確定文字列のバッファをクリアする。

void ClearResultString(void);

もどる  トップページへ


使い方

InputString_SACT2サンプル.jafを基に作成。 InputString.dllは「InputString」で登録してあるということで。

最低限の流れはこういう感じ。 string str; // 入力文字列を入れる変数

InputString.SetFont(64, "MS ゴシック", FW_NORMAL); // 入力中の文字を大きさ64のMSゴシックに
InputString.SetPos(0, 0);
InputString.Begin(); // 開始
InputString.OpenIME();

str = InputString.GetResultString(); // 確定文字列を取得

InputString.CloseIME();
InputString.End(); // 終了

system.MsgBox(str); // テスト用。「system.Output(str);」でも

でもこれをビルドしてもうまく動かない。 入力する間もなく空っぽのメッセージボックスが表示されて終わり。

GetResultString関数は「入力作業が終わるまで待ち、文字列が確定したらそれを返す」というわけではなく、関数を呼び出した時点で確定文字列があってもなくても即座に返ってくるという動作です。 だから、常に関数を呼び出し続けて入力があったかどうかを確認し続けないとダメと。 InputString_SACT2サンプル.jafの無限ループは削除機能とかのためじゃないのです。

というわけでGetResultString関数周りをちょっと書き換え。 for(;;)
{
string result;// 一度の確定ごとに文字列を入れる変数
if (KEY_IS_DOWN(VK_RETURN)) break;// 入力終了

result = InputString.GetResultString();

//文字数を調べて確定文字列が入っているかチェックする。
//入っていればそれを変数strの末尾に追加する。
if(result.Length() > 0)str += result;
}
これで入力ができるはずです。

もどる  トップページへ


サンプル

InputString_SACT2サンプル.jafを基にちょっといじってみたものがこれ。ご自由に。

MJ関数は入力枠を作成します

文字入力関数は入力枠を作成しません

一番上へ  もどる  トップページへ


冒険者の宿 <管理人:TS