2013-08-02 28 views
0

我正試圖將觸摸板手勢支持添加到現有的MFC應用程序。我正在使用VS 2010,支持OnGestureZoom和OnGesturePan()的新MFC,但是,我無法完成這些工作。我有他們的斷點,但他們從來沒有被稱爲。OnGesturePan無法正常工作

我的筆記本電腦上有一個觸摸板,它使用默認的窗口處理(即通過鼠標滾輪事件進行縮放)。不過,我想重寫此縮放行爲,並處理平移,旋轉等

在OnCreate中(),我打電話

int lval = GetSystemMetrics(SM_DIGITIZER); 
int ltouches = GetSystemMetrics(SM_MAXIMUMTOUCHES); 

和兩個函數返回零,那麼這表明有一些這裏的其他問題是阻止手勢正常工作

我也嘗試在OnCreate中調用RegisterTouchWindow(),但這沒有什麼區別。

編輯補充 - 我已經試過以下這個簡單的教程[http://msdn.microsoft.com/en-us/windows7trainingcourse_win7multitouchgesturemfc_topic2.aspx][1],但仍然沒有喜悅。在任務2的第4步,我的應用程序只是說「目前沒有觸摸輸入。」

+0

'RegisterTouchWindow'告訴系統你想處理原始的WM_TOUCH消息。如果您希望系統爲您處理輸入並生成WM_GESTURE,請不要調用RegisterTouchWindow。 – IInspectable

+0

是的,這就是我認爲RegisterTouchWindow所做的,但爲了防萬一,我將其放入測試中。除了那一個測試,我通常沒有調用RegisterTouchWindow()。 :) – user1961169

回答

0

你在運行什麼操作?

而且檢查Tablet PC Input服務啓動 - 在GetSystemMetrics functionSM_DIGITIZER說:「非零,如果當前的操作系統是Windows 7或Windows Server 2008 R2和Tablet PC輸入服務啓動」。

+0

在Windows 8上運行。它不是平板電腦。我沒有平板電腦輸入服務。 – user1961169

+0

我有點困惑 - 你說兩個'GetSystemMetrics()'函數返回零,但也「我有我的筆記本電腦上的觸摸板,它正在與默認的窗口處理」 - 這是否意味着其他應用程序響應觸摸(如捏和縮放)? –

+0

正確。其他應用程序正在正確響應捏和縮放和雙指平移觸摸。我的應用程序甚至響應默認處理,其中捏縮放轉換爲鼠標滾輪事件,並且雙指垂直平移也轉換爲鼠標滾輪事件。但我想覆蓋這個,並把我自己改進的處理雙指平移,等等。 – user1961169