2013-08-28 95 views
4

要查看我指的是see this video的右鍵單擊事件。通過觸摸禁用右鍵單擊並按住Windows 7觸摸屏設備

我正在研究在Windows窗體應用程序中添加縮放按鈕的應用程序。當用戶觸摸按鈕時,應用程序應該連續縮放窗口。這通過監視按鈕上的鼠標按下事件來工作。鼠標關閉時,計時器繼續放大視圖。只要用戶手指在初始觸摸後滑動,此功能就可以正常工作。但是,如果用戶在整個時間推動一個位置,他們將得到一個小小的等待圈,然後是一個右鍵單擊事件。

我已經添加了代碼this link到應用程序:

public bool PreFilterMessage(ref Message m) 
{ 
    // Filter out WM_NCRBUTTONDOWN/UP/DBLCLK 
    if (m.Msg == 0xA4 || m.Msg == 0xA5 || m.Msg == 0xA6) return true; 
    // Filter out WM_RBUTTONDOWN/UP/DBLCLK 
    if (m.Msg == 0x204 || m.Msg == 0x205 || m.Msg == 0x206) return true; 
    return false; 
} 

此代碼禁用造成右鍵單擊事件。然而,這個圈子還是會發生,並且不會發生事件。有沒有辦法讓任何物理觸摸作爲鼠標向下計數,而不是開始右鍵點擊過程?


編輯我試着去Control Panel- >Pen and Touch和禁用按住右鍵的功能。這禁用了旋轉圖標,但是除非用戶稍微移動手指,否則鼠標仍然不會發生。我不明白爲什麼用戶必須塗鴉才能按住按鈕。

回答

0

觸摸屏上顯示的圓圈是在Windows 7中引入的用於右鍵單擊的手勢。它被稱爲Press and Hold

如果要完全禁用此手勢,則需要在初始化表單時調用SetGestureConfig函數來告訴操作系統。該功能允許您明確指定控件支持哪些手勢。

0

請嘗試此操作,它在Windows 10中爲我工作。這不是全局系統更改,按&持有將繼續在OS和其他程序中工作。它禁止按住&只爲您的窗口。

。 。 。

[DllImport("kernel32.dll", EntryPoint = "GlobalAddAtomA", CharSet=CharSet.Ansi)] 
static extern UInt16 GlobalAddAtom(string lpString); 

[DllImport("user32.dll", EntryPoint = "SetPropA", CharSet = CharSet.Ansi)] 
static extern UInt32 SetProp(IntPtr hWnd, UInt32 lpString, UInt32 hData); 

。 。 。

UInt16 atom = GlobalAddAtom("MicrosoftTabletPenServiceProperty"); 
if (atom != 0) 
    SetProp(this.Handle, (UInt32)atom, 1); 

。 。 。