エディット コントロール(テキスト入力ボックス)を作成する
SFREditboxControl クラスを使って、エディット コントロール(テキスト入力ボックス)を作成します。
SFMTYPEDEFCLASS(MyWindow) class MyWindow : public SFRTitleWindow { SFMSEALCOPY(MyWindow) public: MyWindow(Void) static_throws; virtual ~MyWindow(Void) { return; } // テキスト ボックスをポインター型のメンバ変数として定義する SFREditboxControlPtr _editbox; // テキスト ボックス HANDLER_DECLARE_VOIDCONTROL(OnEditboxControl) }; // コンストラクタ (エラー処理は省略) MyWindow::MyWindow(Void) : SFRTitleWindow(SFRApplication::GetInstance(), SFXRectangle(20, 20, 200, 250), "my window") static_throws { // テキスト ボックスの作成 // 第 1 引数 : 親レスポンダ // 第 2 引数 : テキスト ボックス の位置とサイズ // 第 3 引数 : テキスト ボックス の名前 _editbox = new SFREditboxControl(this, SFXRectangle(20, 50, 150, 25), "Editbox"); // 最大文字数を設定する _editbox->SetMaxSize(255); // テキストの入力後やフォーカスが外れたときの // イベントハンドラの設定 editbox->RegisterHandler(SREVT_CONTROL, HANDLER_BEFORE, HANDLER_FUNCTION(OnEditboxControl))); } // テキスト ボックス上でセレクトキーを押したときに // 入力モードに移るようにセットする // ( SelectHandler は SophiaFramework が // 提供するセレクトキー用のハンドラ ) RegisterHandler(SFEVT_KEY, AVK_SELECT, HANDLER_AFTER, HANDLER_FUNCTION(SelectHandler))); } return; } // エディット コントロール ハンドラ // ( テキストの入力後、或いはフォーカスが外れたときに起動する ) HANDLER_IMPLEMENT_VOIDCONTROL(MyWindow, OnEditboxControl, result, control) { // ターゲットを外す control->SetStatusTarget(false); if (result) { // テキストの入力後の場合 // フォーカスを次へ移動する FocusNext(); } // フォーカスが外れた場合 else { //... } }