CWindowBase¶
ウィンドウクラスを作成する方法¶
ウィンドウスクリプトをコンパイルし成功するとウィンドウバイナリファイルとそのウィンドウを使うためのベースファイルが生成されます。
例えば、次の通りです。
#include "wr.h"
WINDOW(TEST) {
ID = 255_000_00001;
STYLE = NOTITLEBAR|ANCHOR_CENTER;
POSITION = 0,-100;
SIZE = 512,256;
};
TEXTBOX(Message) {
ID = 000_000_00010;
POSITION = 100,-80;
CAPTION = 000_111_00020;
EDIT = 255,2;
SIZE = 380, 64;
};
これをコンパイルすると、次のような CTestBase.cs が自動生成されます。
public class TESTBase : CWindowBase {
public const uint windowId = 4278190081; // 255_000_00001
static public TEST create(CWindowBase cParent = null) {
return CWindowMgr.Instance.create<TEST>(windowId,cParent);
}
public const uint TEXTBOX_Message = 10; // 000_000_00010
};
アプリケーションに組み込むときは、このTestBaseを継承したウィンドウを作ってください。
public class TEST : TestBase {
:
};
そして、ウィンドウを実際にクリエイトするときは、次の通りにします。
TEST test = TEST.create();
各ウィンドウオブジェクトに届くコールバックについて *
ウィンドウは複数のコントロールから構成されています。
コントロールに対してタッチやドラッグ等の操作を行うと、それに応じてウィンドウ内のコールバックが呼ばれます。
受け取れるコールバックを下記に列挙しておきます。
各ウィンドウを作成するというのは、ウィンドウスクリプトをコンパイルした際に生成されたクラスを継承し、これらコールバックをオーバライドする作業になります。
ウィンドウの初期化が終わった直後に呼ばれる。
各コントロールのアップデート前に呼ばれる。
各コントロールのアップデート後に呼ばれる。
コントロールのレンダリング前に呼ばれる。
コントロールのレンダリングが終わった後に呼ばれる。
ウィンドウを閉じたときに呼ばれる。
true: ウィンドウを閉じる
false: ウィンドウを閉じるのを抑制する
コントロールが押された。
コントロールが長押しされた。
エディットボックスの入力が確定した。
リッチテキストの一部が押された
コントロールがドラッグされた。 最初に一度、呼び出される。
コントロールがドラッグされている。 ドラッグ中、呼び続けられる。
スクロール可能なコントロールは、どの方向にコントロールがドラッグされたかをonDragによって知ることができる。 ただし、STYLEに SCROLL_LOCK をつけておく必要がある。 onDragによって、ドラッグした方向を検出できる。 DRAGをつけても、これらコントロールには効果がないことに気を付ける必要がある。
コントロールがドラッグされているときに、レンダリングタイミングで呼ばれる。 overrideしなければ普通にコントロールがレンダリングされる。
戻り値の意味は以下の通りです。
true ドラッグ中のコントロールの複製をレンダリングする。
false ドラッグ中のコントロールの複製をレンダリングしない。
特定ウィンドウのコントロール上でドラッグ中のコントロールが離されたとき呼ばれる。 このコールバックは、cCtrlが含まれるウィンドウにコールバックが届く。
何もないところでドラッグ中のコントロールが離されたとき呼ばれる。
また、ドラッグ中のコントロールが含まれるウィンドウが消滅したときにも、消滅する直前に呼び出される。
子ウィンドウとしてクリエイトしたメッセージウィンドウ上でOKボタンが押された。
子ウィンドウとしてクリエイトしたメッセージウィンドウ上でNextボタンが押された。
子ウィンドウとしてクリエイトしたメッセージウィンドウ上でYesボタンが押された。
子ウィンドウとしてクリエイトしたメッセージウィンドウ上でNoボタンが押された。
子ウィンドウとしてクリエイトしたメッセージウィンドウ上でCancelボタンが押された。
レンダーテクスチャが何らかのイベントによって、消失したとき呼ばれる。 ただし、自動復帰はシステム側が行うので基本オーバーライドする必要はない。
ウィンドウオブジェクトの持つ主なプロパティ/メソッド *
ここでは、CWindowBaseが持つアクセス可能なメソッド、プロパティについて列挙しておきます。
アイコンにレンダリング開始 :type:`CWinCtrlRenderIcon` がウィンドウに含まれている時のみ呼び出されます。
この関数の戻り値は、次の意味を持ちます。
trueを返すとテクスチャにレンダリングします。
falseを返すとレンダリングしません。 :meth:`onEndRenderIcon<CWindowBase.onEndRenderIcon>` も呼ばれません。
レンダリングが終了したときに呼ばれる :type:`CWinCtrlRenderIcon` がウィンドウに含まれている時のみ呼び出されます。
この関数の戻り値は、次の意味を持ちます。
trueを返すと、次のフレームもレンダリングを継続します( :meth:`onBeginRenderIcon<CWindowBase.onBeginRenderIcon>` が呼ばれる)
falseを返すと、以降のフレームでは必要がない限り、レンダリングされません。
一度停止させたレンダリングを再開したいときは、 :prop:`needToRender<CWinCtrlRenderIcon.needToRender>` をtrueにしてください。
ウィンドウを閉じたいときに呼び出す。 iCloseInfoは、onCloseのパラメータとして渡されます。
該当するIDを持つコントロールを探す。
該当するIDを持つコントロールを探す。
ウィンドウIDを取得/設定する。
子ウィンドウを返す。
親ウィンドウを返す。
レンダリングレイヤーを取得/設定します。
描画プライオリティを取得/設定します。
ウィンドウのデフォルトテクスチャIDを返す。
ウィンドウ座標を取得/設定する。
ウィンドウ座標を取得/設定する。
Transformを取得する。
x,yスケールを取得/設定する。
表示位置の基準アンカー設定を変更する。
ウィンドウのサイズを取得/設定する。
ウィンドウのサイズを取得/設定する。
表示スクリーンサイズの取得/設定する。
ウィンドウのタイトルバーキャプションを取得/設定する。
ウィンドウのタイトルバーキャプションカラーを取得/設定する。
ウィンドウのタイトルバーキャプション表示オフセットを取得/設定する。
ウィンドウカラーを設定します。 配下にあるコントロールは全て影響受けます。
ウィンドウスタイルを取得します。
プライオリティスタイルを設定/取得する。
true
ウィンドウ表示を隠す。
false
ウィンドウを表示する。
true
ウィンドウの機能を奪い暗くする。
false
ウィンドウを通常表示する。
ウィンドウ機能を奪うと、タッチしても反応しなくなります。
ウィンドウがクローズアニメーション中ならtrueになります。
テクスチャ等の読み込みが行われているときtrueになります。
ウィンドウがフェードイン/フェードアウト中ならtrueになります。
その他オーバーライド可能なメソッド *
コールバック以外にオーバライド可能なメソッドが存在します。 特にウィンドウをクリエイトしたとき/クローズしたときに行うフェードアニメーションをカスタマイズしたいときは オーバライドする必要があります。
フェードが始まった時に呼ばれる。 フェードイン/フェードアウトは、e_FadeStateを見て判断できる。 フェード処理で必要な初期化を行ってください。
e_FadeState.Open
フェードイン
e_FadeState.Close
フェードアウト
フェード中に呼ばれます。
true
フェード中
false
フェード終了
フェードが終了したら、falseを返すようにしてください。
また、e_FadeState.Noneがわたってきたときも、falseを返すようにしてください。
e_FadeState.None
フェードしていない
e_FadeState.Open
フェードイン中
e_FadeState.Close
フェードアウト中