먼저 이벤트 발생에 대한 정보를 직접 또는 간접적으로 얻는 데 필요한 형식을 결정하는 것이 좋습니다.
자체 DLL 작성이 고려되지 않는다는 사실에서 진행하면 API를 거부할 수 있습니까? 간접 방법이 적합한 경우:
창에서 첫 번째로 표시되는 막대의 인덱스를 확인하는 루프 스크립트를 차트에 걸었습니다 - WindowFirstVisibleBar(창의 막대 수와 함께 가능 - WindowBarsPerChart). 이전 값과 다르면 차트로 작업을 수행한 것입니다. 사실, 이 경우 마우스 휠만이 원인이 될 수 있습니다(시간 척도 변경 - "+", "-", Home 또는 End 누르기, 원하는 날짜로 직접 전환).
어쨌든 마우스 휠 회전 이벤트의 정의에서 정확히 무엇이 필요한지 이해하기에는 아직 정보가 충분하지 않습니다. 그런 다음 방법을 제안할 수 있습니다.
PS 음, 창 처리 기능에 액세스해야 하는 경우 SetWindowLongPtr입니다(msdn 참조). 그러나 DLL 없이는 할 수 없습니다. MQL 코드에 있는 새 메시지 처리 프로시저를 할당할 수 없습니다.
아이디어는 차트의 스크롤링을 제어하는 것이었습니다. 하지만 절대 오지 마세요....
아니요, 휠 스핀 이벤트를 정의해야 합니다.
어쨌든 마우스 휠 회전 이벤트의 정의에서 정확히 무엇이 필요한지 이해하기에는 아직 정보가 충분하지 않습니다. 그런 다음 방법을 제안할 수 있습니다.
정확히 무엇이 필요합니까?
물론 목록을 비틀십시오. 다른 무엇? :)
아마도 도움이 될 것입니다
아니요. 거기 후크. MQL에서 함수의 주소를 얻는 방법은 알려져 있지 않습니다.
터미널 창에서 가로채는 사용자 지정 이벤트 처리 절차를 중단하면 됩니다.
그것은 SetWindowLong에 대한 연설입니까?
정확히 무엇이 필요합니까?
물론 목록을 비틀십시오. 다른 무엇? :)
목록(CListCtrl)이 자체 개체인 경우 문제는 무엇입니까? Meta Trader 창이 아니라 마우스 이벤트를 받는 목록입니다.
아니면 MT4 그래픽 개체를 기반으로 한 목록입니까?
목록(CListCtrl)이 자체 개체인 경우 문제는 무엇입니까? Meta Trader 창이 아니라 마우스 이벤트를 받는 목록입니다.
아니면 MT4 그래픽 개체를 기반으로 한 목록입니까?
문제가 없으면 마우스 휠 변위의 FACT를 판별하는 방법을 표시하십시오. 마우스 포인터가 MT4 창에 있을 때. 그리고 그것은 매우 흥미 롭습니다 :)
자체적으로 - Windows를 통해.
인터넷을 공부한 후 세 가지 가능성을 결정했습니다.
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 인터페이스의 인스턴스를 얻는 방법을 모르기 때문에 세 번째 옵션에서도 작동하지 않았습니다.
전문가 여러분, 무엇을 추천하시나요?