CBWInput

現在、開発凍結されています。ここに記載されている内容は、現在実現の目処はたっていません。

概要#

キー及びマウス入力を担う。
キー入力においては、通常のキー状態取得に加え、それぞれのキーに役割を与え、その役割を示すIDでその役割を果たすキー(仮想キー)の状態を取得できる。
マウス入力においては、マウスボタンの押下情報及び、[[グラフィックエンジン]]により拡大された画面に応じたマウス位置を取得することができる。
ジョイスティックも使用可能。

使用方法#

グローバル変数でBWInputが用意されているのでそれを使う。
プログラムの初期化中に最低一度BWInput.Initを、終了処理中にBWInput.Quitを呼び出さなければならない。
キー情報の更新にUpdateを使うので毎フレームBWInput.Updateを呼び出す必要がある。
マウス位置の補正にCBWDrawを使用しているのでCBWDrawもプロジェクトに加えなければならない。
仮想キーの設定にはGetVKeyDefinitionを使う。

なお、初期状態で以下のように仮想キーが設定されている。

m_nVKey[DIK_ESCAPE] = BWK_EXIT;
m_nVKey[DIK_UP] = BWK_UP;
m_nVKey[DIK_NUMPAD8] = BWK_UP;
m_nVKey[DIK_LEFT] = BWK_LEFT;
m_nVKey[DIK_NUMPAD4] = BWK_LEFT;
m_nVKey[DIK_RIGHT] = BWK_RIGHT;
m_nVKey[DIK_NUMPAD6] = BWK_RIGHT;
m_nVKey[DIK_DOWN] = BWK_DOWN;
m_nVKey[DIK_NUMPAD2] = BWK_DOWN;
m_nVKey[DIK_Z] = BWK_OK;
m_nVKey[DIK_SPACE] = BWK_OK;
m_nVKey[DIK_X] = BWK_CANCEL;
m_nVKey[DIK_TAB] = BWK_NEXT;
m_nVKey[DIK_LSHIFT] = BWK_SHIFT;
m_nVKey[DIK_RSHIFT] = BWK_SHIFT;

ダウンロード#

bwinput070116.lzh

履歴#

07/01/16JoyStick対応
余計なinlineを消した
06/09/01Quitの後Initが使えない、Quitがメモリエラーを起こす不具合を修正
06/08/20マウスのXYが入れ替わるバグ修正
06/08/19仮想キーに対応
SetMousePos廃止(使い道がないなー)
IsMouseInRect追加
06/08/10とりあえず完成

メンバ関数#

EnableJoyStick#

void EnableJoyStick(bool b)
ジョイスティックを使用するかどうか決める。
デフォルトでtrue。

GetCDirectInput#

CDirectInput* GetCDirectInput()
キー入力クラスを取得する。
通常IsKey~関数を呼び出せばよいので使う必要はない。

GetCMouseEx#

CMouseEx* GetCMouseEx()
マウス入力クラスを取得する。
通常IsMouse~関数、GetMouse~関数があるので使う必要はないが、生のマウス情報を得たい場合には利用可能。

GetKeyData#

BYTE* GetKeyData()
キー入力情報を取得する。
通常IsKey~関数を呼び出せばよいので使う必要はない。

GetMouseX#

int GetMouseX()
[[グラフィックエンジン]]による補正をかけてマウスのX座標を得る。

GetMouseXY#

LRESULT GetMouseXY(int &x,int &y)
[[グラフィックエンジン]]による補正をかけてマウスの座標を得る。

GetMouseY#

int GetMouseY()
[[グラフィックエンジン]]による補正をかけてマウスのY座標を得る。

GetVKeyDefinition#

int*GetVKeyDefinition()
仮想キー配列のポインタを得る。
これを使うことにより特定のキーに役割を割り当てることができる。
例:
BWInput.GetVKeyDefinition()[DIK_V] = 100;

Init#

void Init(CBWDraw* lpDraw)
[[グラフィックエンジン]]を指定し、初期化を行う。
これを呼び出した時点で各種関数が使えるようになる。
初期化済みの状態で呼び出すとグラフィックエンジンの変更だけを行う。
lpDrawにはNULLも指定可能(その場合は補正がかからない)。

IsJoyStickEnabled#

bool IsJoyStickEnabled()
ジョイスティックが有効かどうか調べる。

IsKeyPress#

bool IsKeyPress(int key)
キーが押されているかを調べる。

IsKeyPush#

bool IsKeyPush(int key)
このフレームでキーが押されたかどうかを調べる。
すなわち、前回Updateを呼び出した時点でそのキーが押されておらず、なおかつ今回のUpdateの時点で押されているとtrueとなる。

IsMouseInRect#

bool IsMouseInRect(LPRECT rect)
マウスの位置がrectの内部にあるかどうかを調べる。

IsMousePressLButton#

bool IsMousePressLButton()
マウスの左ボタンが押されているかどうかを調べる。

IsMousePressRButton#

bool IsMousePressRButton()
マウスの右ボタンが押されているかどうかを調べる。

IsMousePushLButton#

bool IsMousePushLButton()
このフレームでマウスの左ボタンが押されたかどうかを調べる。

IsMousePushRButton#

bool IsMousePushRButton()
このフレームでマウスの右ボタンが押されたかどうかを調べる。

IsMousePushUpLButton#

bool IsMousePushUpLButton()
このフレームでマウスの左ボタンが離されたかどうかを調べる。

IsMousePushUpRButton#

bool IsMousePushUpRButton()
このフレームでマウスの右ボタンが離されたかどうかを調べる。

IsVKeyPush#

bool IsVKeyPush(int vkey)
仮想キーが押されているか調べる。
ジョイスティックが有効ならば上下左右とOK/CANCELの情報にジョイスティックの情報も加味される。

IsVKeyPress#

bool IsVKeyPress(int vkey)
このフレームで仮想キーが押されたかどうか調べる。
ジョイスティックが有効ならば上下左右とOK/CANCELの情報にジョイスティックの情報も加味される。

Quit#

void Quit()
使用を中止し未初期化の状態に戻す。
未初期化の状態で使っても副作用はない。

Update#

void Update()
キー状態及びマウス状態を更新する。
全ての入力情報は最後にこれを呼び出した時点のものとなる。
ジョイスティックが無効であるときにもジョイスティックの情報は更新される。