前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0

4.5. テキストコントロール

文字列が入力可能なテキストコントロールを設置します。

4.5.1. テキストコントロールの設置

図のようなテキストコントロールを MyWindow に設置します。前節で作成したコードに以下のコードを加えます。

宣言

SFMTYPEDEFCLASS(MyWindow)
class MyWindow : public SFRTitleWindow {
    ...
    SFRBrewTextControlPtr _textcontrol;
};

コンストラクタ

MyWindow::MyWindow(Void) : SFRTitleWindow(SFRApplication::GetInstance(),
    SFXRectangle(20, 20, 200, 250), "my window") static_throws
{
    ...

    //*** ↓を追加する

    // テキストコントロール
    // "hello textbox" は初期値
    _textcontrol = new SFRBrewTextControl(
        this, SFXRectangle(10, 190, 150, 28), "hello textbox");

    // 最大文字数を設定
    _textcontrol->SetMaxSize(255);

    // テキストコントロール上でセレクトキーを押したときに
    // 入力モードに移るようにセット
    // (SelectHandler はSophiaFramework が用意しているセレクトキー用のハンドラ)
    if (static_try()) {
        static_throw(
            RegisterHandler(
                SFEVT_KEY, AVK_SELECT, HANDLER_AFTER,
                HANDLER_FUNCTION(SelectHandler)));
    }
}

4.5.2. 入力したテキストの取得

入力したテキストは GetText() メンバ関数で取得します。

// button3 のハンドラ
HANDLER_IMPLEMENT_VOIDCONTROL(MyWindow, OnButtonControl3)
{
    ...

    //*** ↓を追加する

    // GetText() でテキストを取得します。
    // <xref linkend="class.SFXWideString"/> 型で文字列を返すので、
    // それを <xref linkend="class.SFXAnsiString"/> 型に変換します。

    SFXAnsiString string = static_cast&lt;SFXAnsiString&gt;(_textcontrol-&gt;GetText());

    // テキストを表示
    TRACE("textcontrol: %s", string.GetCString());

    //*** ↑ここまで追加
}