スクロールボタンが押されているか、押されているかを判断し、押されている場合は、押せばいいのです。 - ページ 6

 
LEOK:

これが機能なら、やはり中身が必要ですね...。

// 3.2.1. 指定されたグラフの自動スクロールの状態を返す.成功した場合は TRUE を、失敗した場合は FALSE を返します。
bool ServiceGetAutoScroll(int hwndChart); // チャートウィンドウのシステムディスクリプタで、自動スクロールの状態を返す。

機能内部で満足することはないでしょう。それに、いろいろなところからコピーするのが億劫になってしまう。MT4ウィンドウズで作業するためのクラスがあります。そこですべてが一元的に行われるのです。コピーしなければならないことが多すぎる。

この機能は、例えば

// 3.2.1. Функция возвращает состояние автопрокрутки на указанном графике. В случае успеха функция возвращает TRUE, иначе - FALSE.
EXPFUNC(BOOL) ServiceGetAutoScroll(const HWND hwndChart) // Системный дескриптор окна графика, с которого возвращается состояние автопрокрутки.
 {
  try
   {
    Init(); // Инициализация библиотеки.
    return(MT4_WINDOWS->GetAutoScroll(hwndChart));
   }
  catch(TCHAR* szExclusion)
   {
    Utils::Debugging::MessageBoxStop(_T("ServiceGetAutoScroll()"), szExclusion);
   }
  catch(tstring &sExclusion)
   {
    Utils::Debugging::MessageBoxStop(_T("ServiceGetAutoScroll()"), sExclusion);
   }
  catch(...)
   {
    Utils::Debugging::MessageBoxStop(_T("ServiceGetAutoScroll()"), _T("Системная ошибка!") + LAST_ERROR);
   }
  return(FALSE);
 }

自分に合うかどうか?GetAutoScroll() メソッドの背後には、クラス全体が存在します。

時間を無駄にしないために、すでに行われていることを利用する。そうでなければ、自分でプロセッサを開発したり、いっそのことシリコンを採掘して加工することからプログラミングを始めてもいいかもしれません。

 

とにかく、最初のバージョンのスクリプトは何とか動くようです !

もちろん、もっとシンプルで信頼性の高いバージョンもあるのだが、私はそれを手に入れられなかった.

スクリプトを添付します ...

ファイル:
getpixel.ex4  5 kb
 
コードを見せたいなら見せればいいし、見せたくないなら何も言わなくていい。
 
FAQ:
見せたいならコードを見せればいいし、見せたくないなら黙っていればいい。


だから、議論され、示されてきたのです.

このコードには何も隠されていませんので、お願いします。

#property copyright "Copyright © 2012 ЛЕО"
#import "user32.dll" 
      int      GetWindow            (int, int);
      int      GetAncestor          (int hWnd, int gaFlags);
      int      GetWindowTextLengthA (int);
      int      GetWindowTextA       (int, string, int);
      int      GetWindowDC          (int hWnd);
#import
#import "gdi32.dll" int GetPixel (int hDC, int x, int y);

int         hwnd, hg, h;
string      Name = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890";
string      pr[2];

int deinit() {ObjectsDeleteAll();Comment ("");}

int start() {
      ObjectsDeleteAll(); Comment ("");
      int hwnd  = GetAncestor (WindowHandle(Symbol(),Period()),2); //дескриптор основного окна терминала
      
      // Первое дочернее окно
      int temp  = GetWindow (hwnd, 5);              
      GetWindowTextA (temp, Name, GetWindowTextLengthA(temp)+1);
      
      // Поиск первого дочернего окна по имени
      if (Name != "Стандартная" || Name == "Графики" || Name == "Графические инструменты") {
            for (int i=0;i<10;i++) {
                  temp  = GetWindow (temp, 2);  if (temp == 0) break;
                  GetWindowTextA (temp, Name, GetWindowTextLengthA(temp)+1);
                  if (Name == "Стандартная" || Name == "Графики" || Name == "Графические инструменты") {hg = temp; break;}
            }
      } else hg = temp;
      
      // Поиск второго дочернего окна "Графики"
      int h  = GetWindow (hg, 5);              
      GetWindowTextA (h, Name, GetWindowTextLengthA(h)+1);
      if (Name != "Графики") {
            for (i=0;i<10;i++) {
                  h  = GetWindow (h, 2);  if (h == 0) break;
                  GetWindowTextA (h, Name, GetWindowTextLengthA(h)+1);
                  if (Name == "Графики") break;
            }
      }
      
      // если цвет пикселя кнопки =10526880, значит кнопка нажата, в противном случае нет
      while (!IsStopped()) {
            if (GetPixel (GetWindowDC(h),166,3) == 10526880) pr[0] = "ПРОКРУТКА"; else pr[0] = "прокрутка";
            if (GetPixel (GetWindowDC(h),200,3) == 10526880) pr[1] = " СМЕЩЕНИЕ"; else pr[1] = " смещение";
            Comment ("\n ",pr[0],pr[1]); Sleep(500);
      }
      return(0);
}

 
個人的にはどうでもいい。 どうしてもというならEx4を読む。 その後、同じような疑問を持つかもしれない他の参加者が心配だ。
 

コードの弱点

1.グラフとの連動がない。このコードは、任意のアクティブなチャートのボタン位置を取得します。

2.本コードは、自律的なパネル位置については規定しない。つまり、このコードは常に動作するわけではありません。

3.このコードは、ロシア語ローカライズ版でのみ動作します。

4.面白いのですが、紳士的ではありませんね^^;)。

C++の後にMLQ4でWinAPIのコードを見るのは怖いです。

 

すみません、思いつくままに作ってみました!私は初心者で、皆さんのようなACCではありません。

だから、この3つのデメリットがないように、コードの掲載をお願いしたのです !

色について(4点目)、よくわからなかった!?

 
LEOK:

色について(4点目)よくわからないのですが......?

色については私もショックです。
TB_ISBUTTONCHECKEDの不具合について教えてください。
 
LEOK:

すみません、思いつくままに作ってみました!私は初心者で、皆さんのようなACCではありません。

だから、この3つのデメリットがないように、コードの掲載をお願いしたのです !

色についてはよくわかりません!(4点目)

そういう技術文化なんです。ペンチでボルトやナットを緩めるのは文化的ではありません。そのためのスパナがあるのです。

この3つのデメリットを回避する方法は、すでに何度か書きました。

 
jartmailru:
色については私もショックです。
TB_ISBUTTONCHECKEDは、なぜこんなに迷惑なのですか?


見ていない、知らない、試していないものを、好きとか嫌いとか言ってはいけない !

そのため、助けを求めて、もう一度、mql4でTB_ISBUTTONCHECKEDを使ったコード例を求めているのです.