2012-09-30 17 views
2

我目前正在研究一個項目,該項目需要我知道何時將鼠標拖動到左側或右側。如何確定鼠標被拖動的方式(Win32,C++)

我想要處理的信息是根據鼠標拖動的方式,在3d空間(使用OpenGL/Win32)中向左或向右拖動一個對象。

問題是,我不知道如何確定鼠標被拖動的方式。

我試圖找到以前的x座標,並從當前的x座標中減去它,但我不知道如何確定以前的x座標!

有人可以幫我嗎?

PS我已經知道,當前的X鼠標位置被發現與LOWORD(lParam的),但我不知道是如何確定以前的X形的鼠標位置。感謝您的時間。)

+3

您可以將當前位置存儲在變量中,並將該位置作爲上一個位置使用。 – ctor

+0

我已經嘗試了上述方法,但是,我的問題是,當我存儲當前位置時,檢查它是否與新的當前位置對齊,它們始終是平等的(相同)。例如,如果我當前的鼠標位置爲10,並且我再次進行了更改,則我會檢查xprev是否與curx相同,並且它們都等於10. –

+0

在Windows過程中的靜態變量對於存儲以前的變量來說可以。解決方案的核心是使存儲前一個x位置的變量對函數本身是全局的。 –

回答

3

您可以通過將當前鼠標位置存儲爲「最後一個」鼠標位置,然後在兩次鼠標位置更新之後進行相減來自行完成。

onMouseMove(mouseX, mouseY): 
    if previousX and previousY are set: 
     deltaX = previousX - mouseX 
     deltaY = previousY - mouseY 
     actOnDrag(deltaX, deltaY) 

    previousX = mouseX 
    previousY = mouseY 

您可以設置previousXpreviousY一些瘋狂的哨兵值(例如-1),以確定他們是否曾經被設定。

+0

有兩個問題,我如何確定鼠標何時更新兩次,第二,這個「actOnDrag」是什麼,我完全失去了這一點。 –

+0

@JamesDiaz:「*這是什麼」actOnDrag「我完全失去了這一點*」這是你寫的函數*根據鼠標被拖入的方向做你想做的事情。你在說什麼鼠標「更新兩次?」 –

+0

Ravuya寫道:「然後在兩個更新位置更新後,減去。」我想知道如何確定鼠標位置何時更新兩次。 (這就是我的意思是更新兩次).. –