2011-04-28 44 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