現在、開発凍結されています。ここに記載されている内容は、現在実現の目処はたっていません。
概要#
ゲーム内の[[マルチウィンドウシステム]]を実現する。
[[CBWDraw]]と[[CBWInput]]により画面への描画とマウス・キーボード入力を行う。
ウィンドウ中の項目を設定することで入力の自動化も可能。
07/06/10から仕様が変更された。
機能#
- ウィンドウの範囲外を右クリックするかキャンセルボタンを押すとOnCancelメソッドが呼び出される(オーバーライドして機能を設定可能)
- ウィンドウ内の項目が選択されるとOnSelectメソッドが呼び出される(オーバーライドして機能を設定可能)。
- 選択状態で決定ボタンを押すか項目を直接クリックするかショートカットキーを押すことでOnSubmitメソッドが呼び出される(オーバーライドして機能を設定可能)。
使用方法#
このクラスを継承したクラスを作成して新たなウィンドウを定義する。
派生クラスのコンストラクタではウィンドウサイズ、位置、ウィンドウ構成を設定する。
ゲームのメインループ内では、CBWWindow::OnFrameAllとCBWWindow::OnDrawAllを呼び出すことでウィンドウを動作及び描画させる。
ダウンロード#
上が新しい。
window070718.lzh
window070610.lzh
bwwindow060919.lzh
履歴#
| 07/07/18 | CBWDrawBaseに関する変更 |
| 07/06/10 | 項目の扱いを見直し(CBWWindowItem廃止) SetSizeを完全に廃止 |
| 06/09/19 | SetSize→Resizeに名称変更 OnResizeメソッドを追加 |
| 06/09/18 | 表示・非表示のメソッドを用意 Show, Hide それに伴い一部変数へのアクセスを制限した |
| 06/08/27 | 数値設定が特に面倒だったので簡易メソッドを用意 Move, OnMove, SetSize |
| 06/08/20 | とりあえず完成 しかしまだ扱いにくすぎる |
メンバ関数#
ここに記載されていない関数は使うべきではない。
または、ソースコードをよく読んで注意深く使うこと。
Add#
void Add(int id, int x, int y, int w, int h, int up=0, int left=0, int right=0, int down=0)
void Add(int id, int x, int y, CPlaneBase* p, int up=0, int left=0, int right=0, int down=0)
項目を追加する。
CPlaneBase*を引数に取るものはプレーンの大きさを項目の大きさとして認識する。
upからの4つの引数は移動先IDを指定し、0の場合は移動しない。
Blt等描画メソッド#
ウィンドウ左上からの相対座標で描画する。
その他の仕様は[[CBWDraw]]に準ずる。
GetRect#
LRESULT GetRect(LPRECT lprcDst, LPCRECT lprcSrc=NULL)
ウィンドウ内の相対座標で表された領域を画面上の絶対座標に変換する。
特にlprcSrc=NULLの場合はウィンドウそのものの領域を得る。
GetSize#
void GetSize(int &x,int &y)
ウィンドウの大きさを得る。
Hide#
void Hide()
ウィンドウを閉じる。
IsEnabled#
bool IsEnabled()
有効かどうか、すなわち表示されているかどうかを調べる。
IsOnTop#
bool IsOnTop()
最前面のウィンドウかどうか調べる。
Move#
void Move(int x, int y)
ウィンドウ位置を変更する簡易メソッド。
このメソッドを使うとOnMoveメソッドが呼び出される。
OnCancel#
virtual void OnCancel()
画面外右クリック時及びキャンセルボタン押下時に呼び出される。
OnDraw#
virtual void OnDraw()
これをオーバーライドして画面描画を実装する。
描画自体は自動化されていないので個別に描画処理を記述しなければならない。
これには本クラスのメンバ関数を利用すると便利である。
OnDrawAll#
static void OnDrawAll()
全てのウィンドウを描画する。
OnFrame#
virtual void OnFrame()
OnFrameAllで呼び出される。
一応用意しているが本来これはオーバーライドすべきではない。
OnFrameAll#
static void OnFrameAll()
ウィンドウシステムを動作させるためにはこれを呼び出す必要がある。
最前面のウィンドウの入力処理を行った後全てのウィンドウのOnFrameを呼び出す。
OnMove#
virtual void OnMove()
Moveメソッドで移動された直後に呼び出される。
OnResize#
virtual void Resize()
ウィンドウサイズが変更されたときに呼び出される。
OnSelect#
virtual void OnSelect()
項目が選択されたときに呼び出される。
OnSubmitの前に呼ばれているとは限らないことに注意。
OnSubmit#
virtual void OnSubmit()
項目が選択状態のときに決定ボタンが押されるかマウスで直接クリックしたときに呼び出される。
「いいえ」を選択した場合もこちらが呼ばれることに注意。
Resize#
void Resize(int w, int h)
ウィンドウサイズを変更する簡易メソッド。
Show#
void Show()
ウィンドウを開く。
新規ウィンドウを作成すると自動的に開かれる。