2011-04-28 88 views
5

只是一个简单的问题:什么是SystemParameters类?它只是一个“默认值”的集合,或者它实际上是一种钩入窗口?更改系统参数

背景:将& Drop操作,我们使用的是SystemParameters.MinimumHorizo​​ntalDragDistance和SystemParameters.MinimumVerticalDragDistance性能检测d & D.对于触摸屏的默认值是小,我想知道如果我要实现一些配置机制来改变这个值,或者如果我可以在某处改变一些系统设置(可以说注册表或控制面板或其他)。

谢谢!

更新:通过下面的详细答案,我终于找到了我要找的东西。仅供参考,如果其他人在未来寻找它:最小拖动距离可以在注册表

HKEY_CURRENT_USER\Control Panel\Desktop\DragHeight 
HKEY_CURRENT_USER\Control Panel\Desktop\DragWidth 

默认情况下,这两个值都设置为4(PX)来改变。请注意,更改仅在重新启动后生效。

回答

6

它反映了用户的当前设置,如在Windows中的各个位置中指定的那样。某些设置很容易在控制面板中由用户更改,而其他设置则位于注册表值等较为模糊的位置。

最终,它是来自Windows API的围绕GetSystemMetrics function的托管包装。

documentation提供了关于何处获取属性公开的每个值的更多具体细节。例如,SystemParameters.MinimumHorizontalDragDistance property对应于以拖动点为中心的矩形的宽度,以便在拖动操作开始之前允许鼠标指针的有限移动。实质上,在系统将其行为解释为开始拖动之前,允许用户碰撞或推挤光标的“余地”。

该文档还告诉您,它在GetSystemMetrics函数中映射到SM_CXDRAG。因此,如果您需要更详细的信息,您可以仔细阅读本机功能的文档,它会告诉您以下信息:

鼠标指针可以移动的鼠标向下点两侧的像素数拖动操作开始之前。这允许用户轻松地点击并释放鼠标按钮而不会无意地开始拖动操作。如果此值为负值,则从鼠标点左侧减去该值并将其添加到该值的右侧。

总之,它绝对是“挂钩到Windows”。这是确定系统设置的适当方式,而不是在开发时刻对代码进行硬编码。您的应用程序不应该公开其自己的配置界面,以查看系统已允许用户配置的内容;这是多余的和混乱的。

+0

感谢您的非常详细的答案!我很清楚参数在做什么以及它的用途。我实际上正在寻找在系统中设置它的地方。另一方面......我没有特别要求:)而你的回答让我走上了正轨! – harri 2011-04-28 14:09:53

+0

@harri:Ack!请记住,您不应该直接修改注册表来更改此类设置。有[为它记录的API](http://blogs.msdn.com/b/oldnewthing/archive/2009/04/10/9541813.aspx)。您希望'SystemParametersInfo'函数具有'SPI_SETDRAGHEIGHT'和'SPI_SETDRAGWIDTH'参数。 – 2011-04-30 09:27:43

+0

问题是:我不想编写代码来更改设置。我们的测试人员在触摸屏上测试应用程序时,要求增加D&D距离。使用触摸屏,几乎不可能在不启动D&D操作的情况下点击某个项目。但是这个问题并不是特定于软件,而是整个系统。所以我不希望我们的软件调整值。它应该完成整个操作系统,这将是一种混乱。 – harri 2011-05-01 10:13:49