none
win8 Pad wpf程序在用触笔操作时出现向后、向前、向下拖动等小图标,如何去掉 RRS feed

  • 问题

  • 使用触笔快速滑动时出现向下、向后等小图标。目前只发现在InkCanvas上不会出现这个情况。如何做才能在其他控件上不让该图标出现。目前通过pro、Rt等系统的Pad均存在该情况,推测是系统原因,但没找到开发库解决。求达人解答

    2014年2月17日 2:05

答案

  • 对这个问题,我建议你先到TechNet(微软关于产品的专门论坛)论坛上进行发帖。我今天又对这个问题做了一些研究。例如:如何禁止触控笔提示在Windows 8触控设备上。如果能够通过系统设置进行关闭,那么我们再寻求是否有这样的API可以帮助我们以编程的方式关闭提示信息。我找到一些关于触控设备的FAQ,请参考: http://windows.microsoft.com/en-hk/windows-8/touch-pen-settings-faq


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年2月23日 10:17
    版主

全部回复

  • 这个向下/向后的图标是基于操作系统的。可以将它归结为Icon图标文件。就我所知,系统没有自带的API来隐藏这些图标的。即使图标隐藏了,可能文字还是存在的。这里有一个方法是用来移除左上角Icon图标的,你不妨一试,请参考下面的代码:

    public static class IconHelper
    {
        [DllImport("user32.dll")]
        static extern int GetWindowLong(IntPtr hwnd, int index);
    
        [DllImport("user32.dll")]
        static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle);
    
        [DllImport("user32.dll")]
        static extern bool SetWindowPos(IntPtr hwnd, IntPtr hwndInsertAfter, int x, 
    int y, int width, int height, uint flags);
    
        [DllImport("user32.dll")]
        static extern IntPtr SendMessage(IntPtr hwnd, uint msg, IntPtr wParam, IntPtr 
    lParam);
    
        const int GWL_EXSTYLE = -20;
        const int WS_EX_DLGMODALFRAME = 0x0001;
        const int SWP_NOSIZE = 0x0001;
        const int SWP_NOMOVE = 0x0002;
        const int SWP_NOZORDER = 0x0004;
        const int SWP_FRAMECHANGED = 0x0020;
        const uint WM_SETICON = 0x0080;
    
        public static void RemoveIcon(Window window)
        {
            // Get this window's handle
            IntPtr hwnd = new WindowInteropHelper(window).Handle;
            // Change the extended window style to not show a window icon
            int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
            SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_DLGMODALFRAME);
            // Update the window's non-client area to reflect the changes
            SetWindowPos(hwnd, IntPtr.Zero, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | 
    SWP_NOZORDER | SWP_FRAMECHANGED);
        }
    }

    在WPF后台代码中,

    protected override void OnSourceInitialized(EventArgs e)
    {
        IconHelper.RemoveIcon(this);
    }

    这里有一个帖子中提到了隐藏WPF中图标的帖子,对几种常见类型进行了总结,请参考:

    http://stackoverflow.com/questions/18580430/hide-the-icon-from-a-wpf-window

    但是如果是系统限制,那很可能删除不了。不过你可以向Microsoft提交你的反馈,如果这个问题反馈的人数比较多,在后期版本中会做出调整或者修改,
    http://visualstudio.uservoice.com/forums/121579-visual-studio


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年2月18日 6:14
    版主
  • 不是左上角的icon图标,是你使用win8 pad时才有,而且是你使用触笔,在程序上(包括桌面)快速连续点击,会在点击处向下、向后等图标,因为我程序是使用的NavigateWindow,因而使用触笔时一不小心就出现后退图标,然后NavigateWindow就后退到上一页,这样是不行的。我只发现在InkCanvas这个控件上才不会出现这个后退。所以想知道怎么实现,应该是有办法的,但是我没有win8的开发文档,不晓得是怎么做
    2014年2月19日 0:58
  • 我写了一个简单的SampleSurface Pro(我们可以把Surface看成一个平板类型的Windows 8)上运行了下,然后进行移动。没有出现你说的向下/向后的问题。我又把同样的程序放在Windows 8的超级本(支持触控)上去操作,也是没有的。因为我这边的两个设备都没有触控笔的,我是用手指去操作的。我不清楚触控笔是否有特殊的功能。我想这个问题现在定性为一个系统级别的问题。因为我们没有在程序中显示的去写向上/向后这样的操作。而是系统所引发的。这个去除不太现实。你说的Windows 8的开发文档,我不是很清楚。Windows 8 App开发的文档你可以参考,

    http://msdn.microsoft.com/en-in/windows/apps/br229512.aspx

    如果是Windows API的开发你可以参考:

    http://msdn.microsoft.com/en-us/library/ff818516(v=vs.85).aspx

    希望我的回复能够帮到你。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年2月19日 3:08
    版主
  • 就是使用触控笔才会出现,使用手指触摸不会出现。而我这边主要是使用触控笔进行操作,所以才需要禁掉这个功能。
    2014年2月22日 2:41
  • 对这个问题,我建议你先到TechNet(微软关于产品的专门论坛)论坛上进行发帖。我今天又对这个问题做了一些研究。例如:如何禁止触控笔提示在Windows 8触控设备上。如果能够通过系统设置进行关闭,那么我们再寻求是否有这样的API可以帮助我们以编程的方式关闭提示信息。我找到一些关于触控设备的FAQ,请参考: http://windows.microsoft.com/en-hk/windows-8/touch-pen-settings-faq


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年2月23日 10:17
    版主