マウス操作が行われたときに呼ばれるコールバック関数を設定します。
書式
typedef void (* LP_MOUSEPROC)(CPWindow *,CPSTMouseEvent);
void AttachMouseEvent(LP_MOUSEPROC MouseEvent);
|
パラメータ
MouseEvent
「void xxxx(CPWindow *,CPSTMouseEvent)」型のstatic関数を指定します。
コールバック関数の第一引数にCPWindowクラスのポインタ、第二引数にマウスの状態が格納されたCPSTMouseEvent構造体の情報が入ります。
解説
マウス操作が行われたときに呼ばれるコールバック関数を設定します。
なお、コールバック関数は必ずstaticの静的関数である必要があります。
コールバック関数の第二引数の「CPSTMouseEvent」では、EventCode に「CP_MOUSEEVENT_BUTTONDOWN / CP_MOUSEEVENT_BUTTONUP / CP_MOUSEEVENT_MOVE / CP_MOUSEEVENT_DBLCLICK」が入ります。
「CP_MOUSEEVENT_WHELL」によるホイールマウス処理の検出は現在サポートされていません。
コールバックを解除する場合は「DetachMouseEvent( )」を呼び出してください。
例
ウィンドウ(ダイアログ)を生成して、その中でコールバック関数よりマウスイベントを取得します。
CPWindow win;
//マウスイベントを受け取る
static void OnMouseEvent(CPWindow *lpWin,CPSTMouseEvent ev)
{
//マウスイベントでボタンがクリックされた場合
if(ev.EventCode==CP_MOUSEEVENT_BUTTONDOWN)
{
int mx,my;
//マウス左ボタンが押された
if(ev.Button[0]){
//マウスの座標を取得
mx=ev.x;
my=ev.y;
....
}
}
}
void main()
{
//ダイアログを生成する
win.Clear();
win.CreateNewDialog("TestDialog",120,120,120,120);
//マウスイベントのコールバック関数指定
win.AttachMouseEvent(OnMouseEvent);
//ダイアログの表示・イベントループの開始
win.DoModal();
}
この例では、マウスイベントが発生した場合に、「OnMouseEvent」関数が呼ばれます。
ビルド時に必要なファイル
ライブラリ
| :CPartsLib.lib (Macintoshの場合は、CPartsCW.a)
|
ヘッダ
| :CPWindow.h
|
関連リンク
CPWindowクラス
CPWindow::DetachMouseEvent