.. default-domain:: csharp .. _CWindowBase: ======================== 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** が自動生成されます。 .. code-block:: csharp public class TESTBase : CWindowBase { public const uint windowId = 4278190081; // 255_000_00001 static public TEST create(CWindowBase cParent = null) { return CWindowMgr.Instance.create(windowId,cParent); } public const uint TEXTBOX_Message = 10; // 000_000_00010 }; .. アプリケーションに組み込むときは、このTestBaseを継承したウィンドウを作ってください。 .. code-block:: csharp public class TEST : TestBase { : }; .. そして、ウィンドウを実際にクリエイトするときは、次の通りにします。 .. code-block:: csharp TEST test = TEST.create(); .. * 各ウィンドウオブジェクトに届くコールバックについて * .. class:: CWindowBase ウィンドウは複数のコントロールから構成されています。 コントロールに対してタッチやドラッグ等の操作を行うと、それに応じてウィンドウ内のコールバックが呼ばれます。 受け取れるコールバックを下記に列挙しておきます。 各ウィンドウを作成するというのは、ウィンドウスクリプトをコンパイルした際に生成されたクラスを継承し、これらコールバックをオーバライドする作業になります。 .. method:: virtual void onCreate() ウィンドウの初期化が終わった直後に呼ばれる。 .. method:: virtual void onUpdate() 各コントロールのアップデート前に呼ばれる。 .. method:: virtual void onAfterUpdate() 各コントロールのアップデート後に呼ばれる。 .. method:: virtual void onPreRender(CWindowRenderer cRenderer) コントロールのレンダリング前に呼ばれる。 .. method:: virtual onRender(CWindowRenderer cRenderer) コントロールのレンダリングが終わった後に呼ばれる。 .. method:: virtual bool onClose(int iCloseInfo) ウィンドウを閉じたときに呼ばれる。 * true: ウィンドウを閉じる * false: ウィンドウを閉じるのを抑制する .. method:: virtual void onClick(CWinCtrlBase cCtrl) コントロールが押された。 .. method:: virtual void onHold(CWinCtrlBase cCtrl) コントロールが長押しされた。 .. method:: virtual void onClickEnter(CWinCtrlBase cCtrl) エディットボックスの入力が確定した。 .. method:: virtual void onClick(CWinCtrlBase cCtrl,CRichTextOne cText) リッチテキストの一部が押された .. method:: virtual void onBeginDrag(CWinCtrlBase cCtrl,Vector2 pos) コントロールがドラッグされた。 最初に一度、呼び出される。 .. method:: virtual void onDrag(CWinCtrlBase cCtrl,Vector2 pos) コントロールがドラッグされている。 ドラッグ中、呼び続けられる。 スクロール可能なコントロールは、どの方向にコントロールがドラッグされたかをonDragによって知ることができる。 ただし、STYLEに :ref:`SCROLL_LOCK` をつけておく必要がある。 onDragによって、ドラッグした方向を検出できる。 DRAGをつけても、これらコントロールには効果がないことに気を付ける必要がある。 .. method:: virtual bool onDragRender(CWinCtrlBase cCtrl,Transform transform) コントロールがドラッグされているときに、レンダリングタイミングで呼ばれる。 overrideしなければ普通にコントロールがレンダリングされる。 戻り値の意味は以下の通りです。 * true ドラッグ中のコントロールの複製をレンダリングする。 * false ドラッグ中のコントロールの複製をレンダリングしない。 .. method:: virtual void onDrop(CWinCtrlBase cCtrl,CWindowBase cDragWindow,CWinCtrlBase cDragCtrl) 特定ウィンドウのコントロール上でドラッグ中のコントロールが離されたとき呼ばれる。 このコールバックは、cCtrlが含まれるウィンドウにコールバックが届く。 .. method:: virtual void onDropGround(CWinCtrlBase cCtrl) 何もないところでドラッグ中のコントロールが離されたとき呼ばれる。 また、ドラッグ中のコントロールが含まれるウィンドウが消滅したときにも、消滅する直前に呼び出される。 .. method:: virtual void onOK(int msgBoxWinID) 子ウィンドウとしてクリエイトしたメッセージウィンドウ上でOKボタンが押された。 .. method:: virtual void onNext(int msgBoxWinID) 子ウィンドウとしてクリエイトしたメッセージウィンドウ上でNextボタンが押された。 .. method:: virtual void onYes(int msgBoxWinID) 子ウィンドウとしてクリエイトしたメッセージウィンドウ上でYesボタンが押された。 .. method:: virtual void onNo(int msgBoxWinID) 子ウィンドウとしてクリエイトしたメッセージウィンドウ上でNoボタンが押された。 .. method:: virtual void onCancel(int msgBoxWinID) 子ウィンドウとしてクリエイトしたメッセージウィンドウ上でCancelボタンが押された。 .. method:: virtual void onRecreatedRenderTexture(uint mRenderTextureId) レンダーテクスチャが何らかのイベントによって、消失したとき呼ばれる。 ただし、自動復帰はシステム側が行うので基本オーバーライドする必要はない。 * ウィンドウオブジェクトの持つ主なプロパティ/メソッド * ここでは、CWindowBaseが持つアクセス可能なメソッド、プロパティについて列挙しておきます。 .. method:: virtual bool onBeginRenderIcon(CWinCtrlRenderIcon icon) アイコンにレンダリング開始 :type:`CWinCtrlRenderIcon` がウィンドウに含まれている時のみ呼び出されます。 この関数の戻り値は、次の意味を持ちます。 * trueを返すとテクスチャにレンダリングします。 * falseを返すとレンダリングしません。 :meth:`onEndRenderIcon` も呼ばれません。 .. method:: virtual bool onEndRenderIcon(CWinCtrlRenderIcon icon) レンダリングが終了したときに呼ばれる :type:`CWinCtrlRenderIcon` がウィンドウに含まれている時のみ呼び出されます。 この関数の戻り値は、次の意味を持ちます。 * trueを返すと、次のフレームもレンダリングを継続します( :meth:`onBeginRenderIcon` が呼ばれる) * falseを返すと、以降のフレームでは必要がない限り、レンダリングされません。 一度停止させたレンダリングを再開したいときは、 :prop:`needToRender` をtrueにしてください。 .. method:: void close(int iCloseInfo = 0) ウィンドウを閉じたいときに呼び出す。 iCloseInfoは、onCloseのパラメータとして渡されます。 .. method:: WinCtrl find(uint id) 該当するIDを持つコントロールを探す。 .. method:: CWinCtrlBase find(uint id) 該当するIDを持つコントロールを探す。 .. property:: uint id { get; set; } ウィンドウIDを取得/設定する。 .. property:: CWindowBase child { get; } 子ウィンドウを返す。 .. property:: CWindowBase parent { get; } 親ウィンドウを返す。 .. property:: e_LayerId layer { get; set; } レンダリングレイヤーを取得/設定します。 .. property:: int priority { get; set; } 描画プライオリティを取得/設定します。 .. property:: uint texid { get; set; } ウィンドウのデフォルトテクスチャIDを返す。 .. property:: float x { get; set; } .. property:: float y { get; set; } ウィンドウ座標を取得/設定する。 .. property:: Vector2 position { get; set; } ウィンドウ座標を取得/設定する。 .. property:: Transform transform { get; } Transformを取得する。 .. property:: Vector2 scale { get; set; } x,yスケールを取得/設定する。 .. property:: e_Anchor anchor { get; set; } 表示位置の基準アンカー設定を変更する。 .. property:: float width { get; set; } .. property:: float height { get; set; } ウィンドウのサイズを取得/設定する。 .. property:: Vector2 size { get; set; } ウィンドウのサイズを取得/設定する。 .. property:: float screenWidth { get; set; } .. property:: float screenHeight { get; set; } 表示スクリーンサイズの取得/設定する。 .. property:: string caption { get; set; } ウィンドウのタイトルバーキャプションを取得/設定する。 .. property:: WinColor captionColor { get; set; } ウィンドウのタイトルバーキャプションカラーを取得/設定する。 .. property:: Vector2 captionOffset { get; set; } ウィンドウのタイトルバーキャプション表示オフセットを取得/設定する。 .. property:: WinColor color { get; set; } ウィンドウカラーを設定します。 配下にあるコントロールは全て影響受けます。 .. property:: e_WinStyle style { get; set; } ウィンドウスタイルを取得します。 .. property:: e_WinStyle priorityStyle { get; set; } プライオリティスタイルを設定/取得する。 .. property:: bool hide { get; set; } * true ウィンドウ表示を隠す。 * false ウィンドウを表示する。 .. property:: bool disable { get; set; } * true ウィンドウの機能を奪い暗くする。 * false ウィンドウを通常表示する。 ウィンドウ機能を奪うと、タッチしても反応しなくなります。 .. property:: bool isClose { get; } ウィンドウがクローズアニメーション中ならtrueになります。 .. property:: bool isLoaded { get; } テクスチャ等の読み込みが行われているときtrueになります。 .. property:: bool isFade { get; } ウィンドウがフェードイン/フェードアウト中ならtrueになります。 * その他オーバーライド可能なメソッド * コールバック以外にオーバライド可能なメソッドが存在します。 特にウィンドウをクリエイトしたとき/クローズしたときに行うフェードアニメーションをカスタマイズしたいときは オーバライドする必要があります。 .. method:: protected virtual void startFade(e_FadeState eState) フェードが始まった時に呼ばれる。 フェードイン/フェードアウトは、e_FadeStateを見て判断できる。 フェード処理で必要な初期化を行ってください。 * e_FadeState.Open フェードイン * e_FadeState.Close フェードアウト .. method:: protected virtual bool doFade(e_FadeState eState) フェード中に呼ばれます。 * true フェード中 * false フェード終了 フェードが終了したら、falseを返すようにしてください。 また、e_FadeState.Noneがわたってきたときも、falseを返すようにしてください。 * e_FadeState.None フェードしていない * e_FadeState.Open フェードイン中 * e_FadeState.Close フェードアウト中