Отключить сенсорную анимацию Windows 7 в WPF - PullRequest
1 голос
/ 14 ноября 2009

В Windows 7 при касании экрана появляется короткая анимация в точке касания.

В моем приложении WPF я хочу отобразить свои собственные точки касания, не показывая ту, которая предоставляется Windows.

Есть идеи, как отключить их в приложении?

Ответы [ 2 ]

4 голосов
/ 29 сентября 2010

Вы можете отключить их для каждого отдельного элемента управления, хотя это лучший выбор, особенно для вашего конкретного случая, если это сделать в окне корневого приложения и любых порожденных окнах (включая всплывающие окна). Добавьте следующие присоединенные свойства к элементу "" в вашем XAML-файле, чтобы вы получили что-то вроде этого:

<Window x:Class="MyWPFTouchFreeApp"
... [<omitted elements>]
Stylus.IsTapFeedbackEnabled="False" Stylus.IsTouchFeedbackEnabled="False"
Stylus.IsPressAndHoldEnabled="False" Stylus.IsFlicksEnabled="False"
... [<any other omitted attributes>]
>
  <Grid ...

  </Grid>
</Window>

Кроме того, если вы используете Microsoft Surface Toolkit для Windows Touch (в настоящее время в бета-версии), использование SurfaceWindow автоматически отключит их для вас (всплывающие окна должны обрабатываться вручную).

1 голос
/ 17 апреля 2010

Обнаружил это сегодня, хотя, взглянув на Surface Toolkit для Windows Touch, похоже, справляется со своей задачей.

// override on the Window class
protected override void OnSourceInitialized(EventArgs e)
{
    EnableTabletGestures(this, false);
}

[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
public static extern short GlobalAddAtom(string atom);

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr RemoveProp(IntPtr hWnd, string atom);

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int SetProp(IntPtr hWnd, string atom, IntPtr handle);

public bool EnableTabletGestures(Window window, bool enable)
{
    var hWnd = ((HwndSource)PresentationSource.FromVisual(window)).Handle;

    long num = 0L;
    string atom = "MicrosoftTabletPenServiceProperty";
    num = GlobalAddAtom(atom);
    if (num == 0L)
    {
        return false;
    }
    if (enable)
    {
        return (RemoveProp(hWnd, atom).ToInt64() == 1L);
    }
    int num2 = 0x1010019;
    return (SetProp(hWnd, atom, new IntPtr(num2)) == 1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...