전문가의 말: MQL에서 마우스 스크롤 값을 얻는 방법은 무엇입니까? [다섯 번째 포럼에서 다시 게시]

 
우리는 나사 DLL에 대해 이야기하고 있습니다. 직접 작성하는 것은 아직 고려되지 않았습니다.


인터넷을 공부한 후 세 가지 가능성을 결정했습니다.

1. WM_MOUSEWHEEL 처리
2. WM_INPUT 처리
3. DirectInput에서 마우스 데이터 가져오기.

첫 번째 옵션은 이 이벤트가 처리되는 창이 있다고 가정합니다. 불행히도 MQL에서 터미널 창의 메시지 큐에 도달하는 방법을 몰라서 이 옵션이 사라졌습니다. http://www.rsdn.ru/article/baseserv/hookdll.xml

두 번째 옵션도 창을 가정하지만 GetRawInputBuffer 함수 를 참조하면 터미널을 우회하여 데이터를 얻을 수 있을 것이라는 희망이 있었습니다.

등록하고 정보를 얻는 모든 기능을 사용할 수 있었습니다. 즉:
GetRawInputDeviceInfo

GetRawInputDeviceList

GetRegisteredRawInputDevices

RegisterRawInputDevices

그러나 필요한 GetRawInputBuffer 함수 가 작동하지 않았습니다. 버퍼가 비어 있고 데이터가 캡처되지 않습니다.


불행히도 LPDIRECTINPUTDEVICE8 / LPDIRECTINPUT8 인터페이스의 인스턴스를 얻는 방법을 모르기 때문에 세 번째 옵션에서도 작동하지 않았습니다.


전문가 여러분, 무엇을 추천하시나요?


질문에 동참합니다.
 

먼저 이벤트 발생에 대한 정보를 직접 또는 간접적으로 얻는 데 필요한 형식을 결정하는 것이 좋습니다.

자체 DLL 작성이 고려되지 않는다는 사실에서 진행하면 API를 거부할 수 있습니까? 간접 방법이 적합한 경우:

창에서 첫 번째로 표시되는 막대의 인덱스를 확인하는 루프 스크립트를 차트에 걸었습니다 - WindowFirstVisibleBar(창의 막대 수와 함께 가능 - WindowBarsPerChart). 이전 값과 다르면 차트로 작업을 수행한 것입니다. 사실, 이 경우 마우스 휠만이 원인이 될 수 있습니다(시간 척도 변경 - "+", "-", Home 또는 End 누르기, 원하는 날짜로 직접 전환).

어쨌든 마우스 휠 회전 이벤트의 정의에서 정확히 무엇이 필요한지 이해하기에는 아직 정보가 충분하지 않습니다. 그런 다음 방법을 제안할 수 있습니다.

PS 음, 창 처리 기능에 액세스해야 하는 경우 SetWindowLongPtr입니다(msdn 참조). 그러나 DLL 없이는 할 수 없습니다. MQL 코드에 있는 새 메시지 처리 프로시저를 할당할 수 없습니다.

 

아이디어는 차트의 스크롤링을 제어하는 것이었습니다. 하지만 절대 오지 마세요....

아니요, 휠 스핀 이벤트를 정의해야 합니다.

 
Scriptong :

어쨌든 마우스 휠 회전 이벤트의 정의에서 정확히 무엇이 필요한지 이해하기에는 아직 정보가 충분하지 않습니다. 그런 다음 방법을 제안할 수 있습니다.


정확히 무엇이 필요합니까?

물론 목록을 비틀십시오. 다른 무엇? :)

 

아니요. 거기 후크. MQL에서 함수의 주소를 얻는 방법은 알려져 있지 않습니다.
 
터미널 창에서 가로채는 사용자 지정 이벤트 처리 절차를 중단하면 됩니다.
나는 이것을 스스로했다 :
- 사용자가 MT 창을 닫기 위해 클릭
- 묻습니다 : 표시기를 변경 했습니까? 저장 했습니까? 예 아니오 취소
취소되면 아무도 가지 않습니다.
예, 저장하고 종료합니다. 아니요, 저장하지 않고 종료합니다.
원어.

후크는 실제로 관련이 없습니다.

> 나사 DLL에 대한 질문입니다. 직접 작성하는 것은 아직 고려되지 않았습니다.

행운을 빕니다...
 
jartmailru :
터미널 창에서 가로채는 사용자 지정 이벤트 처리 절차를 중단하면 됩니다.

그것은 SetWindowLong에 대한 연설입니까?
 
sergeev :
그것은 SetWindowLong에 대한 연설입니까?
네.
 
sergeev :

정확히 무엇이 필요합니까?

물론 목록을 비틀십시오. 다른 무엇? :)


목록(CListCtrl)이 자체 개체인 경우 문제는 무엇입니까? Meta Trader 창이 아니라 마우스 이벤트를 받는 목록입니다.

아니면 MT4 그래픽 개체를 기반으로 한 목록입니까?

 
Scriptong :


목록(CListCtrl)이 자체 개체인 경우 문제는 무엇입니까? Meta Trader 창이 아니라 마우스 이벤트를 받는 목록입니다.

아니면 MT4 그래픽 개체를 기반으로 한 목록입니까?


문제가 없으면 마우스 휠 변위의 FACT를 판별하는 방법을 표시하십시오. 마우스 포인터가 MT4 창에 있을 때. 그리고 그것은 매우 흥미 롭습니다 :)

자체적으로 - Windows를 통해.