我如何确定滚动按钮是被按下还是被压下,如果是,就压下它 ! - 页 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个缺点了 !

我不明白颜色的问题(第四点)!?

 
LEOK:

关于颜色(第四点),我不明白!?

我对这个颜色也感到震惊。
TB_ISBUTTONCHECKED有什么问题?
 
LEOK:

对不起,我只是用我能想到的东西编出来的,我是个初学者,不像你是个ACC!

这就是为什么我要求公布代码,这样就不会有这3个缺点了 !

我不明白颜色的问题(第四项)!

这是一种这样的技术文化。用钳子拧开螺栓和螺母是没有文化的。有一个扳手可用于此。

如何做到没有这3个缺点,已经写过几次了。

 
jartmailru:
我对这个颜色也感到震惊。
为什么TB_ISBUTTONCHECKED如此令人讨厌?


你不能说:喜欢或不喜欢,如果我没有看到它,不知道,也没有试过它!你不能说:喜欢或不喜欢它。

这就是为什么我请求帮助,并再次要求提供在mql4上使用TB_ISBUTTONCHECKED的代码示例 ...