目次に戻る
一覧ページに戻る
CPWindow::AttachMouseEvent
2001/12/29 update.
マウス操作が行われたときに呼ばれるコールバック関数を設定します。

書式

  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