2014-05-21 25 views
2

我應該使用哪一個?我只使用Windows 8.x,所以我不關心WM_POINTER不能向後兼容Windows 7等。我也不在乎手勢;只是關於原始的觸動。 WM_POINTER唯一的明顯優勢似乎是它統一了觸摸和鼠標輸入(但是這很容易與WM_TOUCH一起使用,因爲可以使用GetMessageExtraInfo()來檢查鼠標事件)。易用性也不是問題;我一直在使用WM_TOUCH,我只是想知道是否應該切換到WM_POINTER。我最關心的是延遲和效率(遊戲相關的應用程序)。我無法分辨WM_POINTER是否是WM_TOUCH的包裝,它有額外的開銷。任何意見?WM_TOUCH vs WM_POINTER

回答

1

WM_TOUCH已過時。專門使用WM_POINTER。 (WM_TOUCH實際上是WM_POINTER的包裝。)

GetMessageExtraInfo也是臭名昭着的脆弱。你必須在調用GetMessage之後立即調用它,否則你會冒中間函數調用進行COM調用或做其他事情導致調用GetMessage的風險。

+0

但是WM_TOUCH用後續的GetTouchInputInfo()函數返回一個觸摸事件數組,而WM_POINTER *表示每個觸摸事件都有一個獨立的消息,並帶有相關的窗口過程調用。在多點觸摸的情況下後者不是不那麼有效? –

+1

@DisplayName你做錯了。 :)看[GetPointerFrameInfo](http://msdn.microsoft.com/en-us/library/windows/desktop/hh454879(v = vs.85).aspx)一次檢索整個觸摸消息。如果您是唯一的指針處理程序,則可以使用[SkipPointerFrameMessages](http://msdn.microsoft.com/en-us/library/windows/desktop/hh454912(v = vs.85).aspx)放棄幀的剩餘指針消息。 –

相關問題