まず、イベント発生の情報をどのような形で受け取るのか、直接なのか間接なのか、決めておくとよいでしょう。
DLLを自作するのは無理だとして、APIも廃止してはどうでしょう。間接法が適している場合。
ウィンドウ内の最初の可視バーのインデックスをチェックするスクリプトをループさせる必要があります - WindowFirstVisibleBar (ウィンドウ内のバー 数 - WindowBarsPerChartと一緒に行うこともできます).前の値と異なる場合は、チャートのチェックが行われたことになります。この場合、マウスホイールだけが原因ではない可能性があります(時間のズーム - "+"、"-"、ホームまたはエンドをクリックすると、目的の日付に直接ジャンプします)。
いずれにせよ、マウスホイールの回転イベントを検出するために何が必要なのか、まだ情報が十分ではありません。そして、方法を提案することができます。
P.S. また、ウィンドウ処理関数へのアクセスが必要な場合は、SetWindowLongPtr (msdn参照)です。しかし、ここではMQLコードにあるメッセージ処理プロシージャを新規に割り当てることができないので、DLLなしにはできません。
スクロールするチャートをコントロールしたい、という思いがありました。でも、コミルフォはダメですね...。
いいえ、スクロールホイールイベントを定義する必要があります。
いずれにせよ、マウスホイールの回転イベントの検出に何が必要なのか、まだ十分な情報が得られていないのが現状です。そして、その方法を提案することができます。
具体的に何が必要なのでしょうか?
もちろん、回転させるためのリストです。:)
役立つかもしれません。
いいえ、フックです。 MQLで関数のアドレスを取得する方法がわかりません。
ターミナルウィンドウには、インターセプトを伴うカスタムイベント処理プロシージャが必要です - それだけです。
SetWindowLongのことですか?
具体的に何が必要なのでしょうか?
リスト回転はもちろん、他には?:)
リスト(CListCtrl)がそれ自身のオブジェクトである場合、何が問題なのでしょうか?マウスイベントを受信するのはリストであり、Meta Trader ウィンドウではありません。
それとも、MT4のチャートオブジェクトに基づいたリストのことでしょうか?
リスト(CListCtrl)がそれ自身のオブジェクトである場合、何が問題なのでしょうか?マウスからのイベントを受け取るのはリストであり、Meta Traderのウィンドウではありません。
それとも、MT4のグラフィカルオブジェクトに基づいたリストのことでしょうか?
問題なければ、マウスホイールシフトのFACTの判定方法を明示してください。マウスポインタがMT4ウィンドウ内にある場合。とても興味深いです :)
もちろん、Windowsで。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
ネットサーフィンの結果、3つの 可能性があることがわかりました。
WM_MOUSEWHEELの取り扱いについて 1.
WM_INPUTの処理 2.
3.DirectInputからマウスデータを受信する。
最初のケースは、このイベントが処理されるウィンドウが存在することが前提です。残念ながら、私はMQLからターミナルウィンドウのメッセージキューにアクセスする方法を知らないので、このバリアントは失敗しました。http://www.rsdn.ru/article/baseserv/hookdll.xml
2番目のバリエーションもウィンドウを意味しますが、GetRawInputBuffer 関数を呼び出すことで、ターミナルを渡さずにデータを受信できるようになることを期待したのです。
登録・検索機能をすべて使わせていただきました。Namely:
GetRawInputDeviceInfo
GetRawInputDeviceList
GetRegisteredRawInputDevices
RegisterRawInputDevices
しかし、私が探していたGetRawInputBuffer 関数は動作しませんでした。バッファは空で、データは取り込まれていない。
残念ながら、私はLPDIRECTINPUTDEVICE8 / LPDIRECTINPUT8インターフェイスのインスタンスを取得する方法を知らないので、私は3番目の方法でも失敗しました。
専門家の皆さん、アドバイスをお願いします。