2

私は C++ CLI アプリケーションに取り組んでおり、イベントに問題があります。マウスボタンがクリックされている間にイベントを発生させることができるかどうか疑問に思っています。たとえば、マウスがクリックされた場合にのみ、マウスが次の正方形に移動したかどうかを確認したいと考えています。つまり、正方形 1 をクリックすると、そのクリックを押したまま正方形 2 を移動できるはずです。私のプログラムはこれを認識します。

「クリック」イベントを含むさまざまなイベントをマウスで実行しましたが、ボタンが押されている間、ホバー、マウス入力、マウスダウンのいずれのイベントもトリガーされません。同じことを行う「MouseClick」イベント。mouseDown イベントだけを使用してみましたが、別の mouseDown イベント、マウス入力、またはホバー イベントが発生しません。

マウスの位置を確認するだけでは、何ができるのかわかりません。マウスの位置チェックを行う必要がないようにしたいと思います。

誰かにアイデアがあれば、大歓迎です。

4

1 に答える 1

2

明らかに、MouseMove イベントに注意を払い、マウスが別の正方形に移動するのを確認する必要があります。だいたい:

    void panel1_MouseMove(Object^ sender, MouseEventArgs^ e) {
        if ((e->Button & System::Windows::Forms::MouseButtons::Left) == 
                         System::Windows::Forms::MouseButtons::Left) {
            int square = MapPosToSquare(e->Location);
            if (square != currentSquare) {
                currentSquare = square;
                OnSquareClicked(currentSquare);
            }
        }
    }

これらの「四角形」が実際にコントロールである場合、別の問題があります。マウスをキャプチャしないように、MouseDown イベント ハンドラでコントロールの Capture プロパティを false に設定する必要があります。

于 2013-04-14T00:47:20.277 に答える