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_tutorial5
- #include "mglaugust2.h"
- // メインフレームクラス
- class CMyFrame : public CAugustWindowFrame2
- {
- private:
- CAugustImage2 m_img;
- CAugustMouseInput m_mouse;
- public:
- // 初期化時に呼ばれる
- bool OnGraphicInitEnded()
- {
- // コントロールクラスの登録
- RegistControl(&m_img);
- RegistControl(&m_mouse);
- // 画像の読み込み
- m_img.Load("test.jpg");
- // マウスクリックハンドラの登録
- m_mouse.RegistHandler(
- CAugustMouseInput::EVTTYPE_ON_DOWN,
- CAugustMouseInput::LBUTTON,
- (CAugustMouseInput::CALLBACK_TYPE_MI)&CMyFrame::OnMouseLDown,
- this);
- return true;
- }
- // クリック時に呼ばれる
- bool OnMouseLDown(int x, int y)
- {
- if ( x >= 200 && x <= 400 && y >= 100 && y <= 200 )
- ::MessageBoxA((HWND)GetHwnd(), "いやーん", "いけないクリック", NULL);
- else if ( x >= 200 && x <= 400 && y >= 300 && y <= 400 )
- ::MessageBoxA((HWND)GetHwnd(),"そこはだめよ・・・", "いけないクリック", NULL);
- return true;
- }
- };
- // WinMain
- int APIENTRY WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow )
- {
- CMyFrame frame;
- frame.Start();
- return 0;
- }
なんともくだらないプログラムです。(何
男の人は大喜び(?)かも知れませんが女性の人はそうでないかも知れません・・・
適当な画像を用意して、適当にif文の条件式の数値も変えて、遊んでみてください。
メッセージもお好みに。
マウスの入力には CAugustMouseInput と言うクラスを使います。 キーボードの場合と同様に、RegistHandler() を使ってハンドラを登録します。
第一引数には、キーボードの場合同様に ON_DOWN, ON_UP, ON_PRESS が指定可能ですが、これに加えて、
ON_MOVE と言うのも指定可能です。ON_MOVE の場合は、マウスが画面内で移動のあった際にコールバックメソッドを呼びます。
第二引数はどのマウスボタンかを指定します。LBUTTON=左ボタン、RBUTTON=右ボタン、CBUTTON=センター(ホイール)ボタンです。
第三引数はコールバックするメソッド。bool Hoge(int x, int y); な引数、及び復帰値のメソッドです。
第一引数が、ON_DOWN, ON_UP, ON_PRESS の場合は、x, yにはそのイベントが発生した時点でのマウスカーソル位置(画面左上を0,0とした場合の位置)が入ってきます。
タイトルバーのクリック等でもこのイベントは発生し、その場合、xやyには負の値が入ります。
ON_MOVE の場合にはマウスの移動量が入ってきます。また、ON_MOVE で且つ、第二引数が CBUTTON の場合には、x としてホイール移動量が入ります。
ホイール移動量は、ホイールを1ノッチ分動かした際に+1や-1とはならず、+120や-120等のような値になります(この値は、マウスやドライバ等によって異なるようです)。
なお、yの値としては常に-9999(CAugustMouseInput::INVALID_POINT)が入ります。
メソッドの復帰値は、キーボードの場合と同様に、通常はtrueを、プログラムを終了させたい場合はfalseを返します。
第四引数には、呼び出すメソッドのインスタンス(通常はthis)を指定します。
OnMouseLDown() 内にて、MessageBoxA() を呼び出すにあたって、
GetHwnd() と言うメソッドを使用しています。これにより、ウインドウのハンドルを取得する事が可能です。
(なお、GetHwnd() の復帰値はvoid*型なので、HWNDへのキャストが必要です。)