2014-06-17 3 views
0

개체를 선택할 때 사용자가 개체를 끌 때 문제가 있습니다. 덜 민감한 임계 값을 설정하기 위해 마우스 이벤트를 사용하는 여러 가지 방법을 시도했습니다. example.Windows 양식 응용 프로그램에서 끌기 임계 값을 변경하려면 어떻게합니까?

Piccolo 그래픽 엔진을 사용하고 있기 때문에 주로 작동하지 않습니다.

레지스트리를 통해이 작업을 수행 할 수 있지만 사용자 레지스트리 항목이 엉망이되고 싶지 않습니다.

대안은 SystemParametersInfo; 및 SPI_SETDRAGHEIGHT 및 SPI_SETDRAGWIDTH 매개 변수와 함께 pinvoke를 사용하는 것으로 보입니다. 나는 값이있는 uiAction 매개 변수를 알고

[DllImport("user32.dll", SetLastError = true)] 
static extern bool SystemParametersInfo(int uiAction, int uiParam, IntPtr pvParam, int fWinIni); 

그리고 내가 그것을 호출하는 방법을 알고

SPI_SETDRAGWIDTH = 0x004C

SPI_SETDRAGHEIGHT = 0x004D

나는 uiParam 너비 또는 높이를 알고있다.

그 이상으로 저는 붙어 있습니다. 난 정말이 물건을 이해하지 못하고 마지막 두 매개 변수를 설정하는 방법에 관해서는 모르겠다.

C++ (?) 코드 here이 있습니다.

그러나 C 변종에 대한 지식과 C#으로 변환하는 것은 좋지 않습니다.

누군가 내 애플리케이션에서 드래그 끌기 임계 값을 설정하는 데 도움을 줄 수 있습니까?

+0

필자는 Piccolo가 자체 끌어서 놓기 기능을 구현하고 있으며 자신의 라이브러리에 의존하기를 원한다면 Piccolo가 사용하는 임계 값에 구애받지 않을 것이라고 생각합니다. Piccolo는 레지스트리 설정을 통해 임계 값을 수정하지 못하게 할 수 있습니다. 설정이 구성 가능한지 다른 피콜로 사용자에게 질문 할 수 있습니다. – RogerN

+0

@ RogerN 당신은 정확하고 드래그 처리기가 내 모든 노력을 무시하고 영향을 미치는 것처럼 보였습니다. 정말 내가 왜 pinvoke 경로를 가고 싶습니다 – ScruffyDuck

+0

Pass IntPtr.Zero, 인수는이 설정에 사용되지 않습니다. 그리고 마지막 인자로 2를 사용하면 실행중인 모든 프로그램이 시스템 설정을 변경했다는 것을 알 수 있습니다. 그리고 네, 사용자는 당신을 싫어할 것입니다, 당신의 제거 프로그램이 신뢰할 수 있는지 확인하십시오. 소스를 변경하지 않으려는 경우 오픈 소스 소프트웨어를 사용하는 데 많은 포인트가 없습니다. –

답변

1

피콜로 소스 코드를 검사 한 결과 드래그 임계 값이 이 아니고이 시스템 설정에 따라 달라 지므로 PInvoke를 사용하여 SystemParametersInfo를 호출하면 여기에 도움이되지 않습니다. 그러나 임계 값은 PDragSequenceEventHandler 개체의 MinDragStartDistance 속성을 변경하여 구성 할 수 있습니다. 기본값은 0이며, 아마도 사용자가 너무 민감해서 좌절하는 이유를 설명합니다.

필자는 Piccolo를 사용해 본 경험이 없으므로 특정 속성에 액세스하는 방법에 대해서는 언급 할 수 없습니다.

+0

고맙습니다. 그 재산을 발견하고 그것을 작동합니다. – ScruffyDuck

관련 문제