open-mgl-dev (開発バージョン) (0.7.9.80) | 2009-11-02 22:25 |
open-mgl (DirectX9, VC++2008) (0.7.9) | 2009-09-27 20:32 |
roast-dev (開発バージョン) (0.0.1.40-dev) | 2009-11-02 23:09 |
>Wikiトップ>August Framework 2.0>AF2_tutorial4
- #include "mglaugust2.h"
- class CMyFrame : public CAugustWindowFrame2
- {
- private:
- CAugustImage2 m_img;
- CAugustKeyboardInput m_kb;
- public:
- // 初期化時に呼ばれる
- bool OnGraphicInitEnded()
- {
- RegistControl(&m_img);
- RegistControl(&m_kb);
- m_img.Load("test.jpg");
- // キーボードイベントハンドラ登録(左)- 押している間移動
- m_kb.RegistHandler(
- CAugustKeyboardInput::ON_PRESS,
- AGH_KEYCODE_LEFT,
- (CAugustKeyboardInput::CALLBACK_TYPE_MI)&CMyFrame::MoveLeft,
- this);
- // キーボードイベントハンドラ登録(右)- 押している間移動
- m_kb.RegistHandler(
- CAugustKeyboardInput::ON_PRESS,
- AGH_KEYCODE_RIGHT,
- (CAugustKeyboardInput::CALLBACK_TYPE_MI)&CMyFrame::MoveRight,
- this);
- // キーボードイベントハンドラ登録(上)- 離した瞬間だけ移動
- m_kb.RegistHandler(
- CAugustKeyboardInput::ON_UP,
- AGH_KEYCODE_UP,
- (CAugustKeyboardInput::CALLBACK_TYPE_MI)&CMyFrame::MoveUp,
- this);
- // キーボードイベントハンドラ登録(下)- 押した瞬間だけ移動
- m_kb.RegistHandler(
- CAugustKeyboardInput::ON_DOWN,
- AGH_KEYCODE_DOWN,
- (CAugustKeyboardInput::CALLBACK_TYPE_MI)&CMyFrame::MoveDown,
- this);
- return true;
- }
- // 各ハンドラメソッド
- bool MoveLeft(){
- m_img.Move(-1,0);
- return true;
- }
- bool MoveRight(){
- m_img.Move(1,0);
- return true;
- }
- bool MoveUp(){
- m_img.Move(0,-10);
- return true;
- }
- bool MoveDown(){
- m_img.Move(0,10);
- return true;
- }
- };
- // WinMain
- int APIENTRY WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow )
- {
- CMyFrame frame;
- frame.Start();
- return 0;
- }
キーボード入力を扱うには CAugustKeyboardInput というコントロールクラスを使います。
まずは OnGraphicInitEnded() 内で RegistControl() をし・・・
その後、m_kb.RegistHandler() と言うメソッドを呼び出しています。
第一引数はイベントの契機。CAugustKeyboardInput::ON_DOWN の他に、ON_UP、ON_PRESS があります。
それぞれ、
です。
第二引数はどのキー入力に反応するか。
通常のアルファベットや数字は直接char型の値('A'みたいな感じ)で指定出来ます。
それ以外の特殊なキー入力(例えば矢印キーなど)はagh_KeyCode.hに定義されています。
第三引数は、キーボードイベント発生時に呼び出すコールバックメソッドの関数ポインタです。
引数なし、復帰値がbool型であるメソッドを指定し、上記例のようにキャストが必要です。
復帰値としては通常trueを返すようにしますが、falseを返すことにより、プログラムを終了させられます。
第四引数にはクラスインスタンスを指定します。通常は「this」となる事でしょう。
コードの記述を完了したら、ビルドし、実行してみましょう。
今回のサンプルコードでは、十字キーの左右が押されている間左右に、
上キーが離された瞬間上に、下キーが押された瞬間下に移動するようになっています。