Nasıl belirlenir: otomatik kaydırma düğmesine basılır veya basılır ve basılırsa bırakın!? - sayfa 5

 

int max = SendMessage( hwndTaskbar, TB_BUTTONCOUNT, 0, 0);

Lütfen söyle. TB_BUTTONCOUNT, TB_ISBUTTONPRESSED ?!

Bir düğme ve durumunu tanımlamak istiyorum!

 
MSDN'de bakmak mümkündür.
 

Araç çubuğundaki hangi komutu düğmeler arasında sıralayabilir ve doğru olanı bulabilirsiniz?

Belki biri yapmıştır?

Grafik penceresi tutamacı bulundu:

#property copyright "Copyright © 2012 ЛЕО"
#import "user32.dll" 
      int      GetWindow            (int, int);
      int      FindWindowExA        (int, int, string, string);
      int      GetParent            (int hWnd); 
      bool     GetCursorPos         (int& Pos[2]);
      bool     GetWindowRect        (int hWnd,int& Pos[4]);
      int      GetKeyState          (int button); 
      void     mouse_event          (int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
      int      GetAncestor          (int hWnd, int gaFlags);
      int      GetWindowTextLengthA (int);
      int      GetWindowTextA       (int, string, int);
#import
#import "gdi32.dll" int GetPixel (int hDC, int x, int y);
int         Pos[2];
int         rect[4];
int         hwnd, hg, h;
int         X, Y;
string      Name       = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234";
int deinit() {ObjectsDeleteAll();Comment ("");}
int start() {
      ObjectsDeleteAll(); Comment ("");

       int hwnd  = GetAncestor ( WindowHandle ( Symbol (), Period ()), 2 ); //дескриптор основного окна терминала
      
       int temp  = GetWindow (hwnd, 5 );              
       int Count = GetWindowTextLengthA (temp); GetWindowTextA (temp, Name, Count+ 1 );
       if (Name != "Стандартная" || Name == "Графики" || Name == "Графические инструменты" ) {
             for ( int i= 0 ;i< 10 ;i++) {
                  temp  = GetWindow (temp, 2 );   if (temp == 0 ) break ;
                  Count = GetWindowTextLengthA (temp); GetWindowTextA (temp, Name, Count+ 1 );
                   if (Name == "Стандартная" || Name == "Графики" || Name == "Графические инструменты" ) {hg = temp; break ;}
            }
      } else hg = temp;
      
       int h  = GetWindow (hg, 5 );              
      Count = GetWindowTextLengthA (h); GetWindowTextA (h, Name, Count+ 1 );
       if (Name != "Графики" ) {
             for (i= 0 ;i< 10 ;i++) {
                  h  = GetWindow (h, 2 );   if (h == 0 ) break ;
                  Count = GetWindowTextLengthA (h); GetWindowTextA (h, Name, Count+ 1 );
                   if (Name == "Графики" ) break ;
            }
      }
       Print (DecToHex(h, 8 ));

      while (!IsStopped()) {
            GetWindowRect (h,rect);
            GetCursorPos  (Pos);
            X                       = Pos[0] - rect[0];
            Y                       = Pos[1] - rect[1];
            Comment ("X= ",X,"\n","Y= ",Y); Sleep(100);
      }
      return(0);
}
string DecToHex (int n, int dig) {
      string s[], r="";
      string Sym[16] = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
      ArrayResize (s,dig);
      for (int i=0; i<dig; i++) s[i]="0";
      i = dig-1;
      while (n != 0) {s[i] = Sym[n%16]; n = n>>4; i--; }
      for (i=0; i<dig; i++) r=r+s[i];
      return (r);
}
 

Bir şey anlamadım... Neden?! Şiddetle şaşırttı. Başlığıma baktın mı? Kodlara bakılırsa, hayır.

Grafikteki herhangi bir komut, bir fonksiyon, bir kod satırıdır.

 
Zhunko :

Bir şey anlamadım... Neden?! Şiddetle şaşırttı. Başlığıma baktın mı? Koda bakılırsa, hayır.

Grafikteki herhangi bir komut, bir fonksiyon, bir kod satırıdır.


Tamam, bu soruna başka bir yerde bir çözüm arayacağım.

Rahatsızlıktan dolayı özür dileriz...

 
LEOK :


Tamam, bu soruna başka bir yerde bir çözüm arayacağım.

Rahatsızlıktan dolayı özür dileriz...

Orada, başlıkta, kod ve bir örnek. Alınma. Yaptığınız şey uzun zamandır bu forumda farklı versiyonlarda birçok kez kararlaştırıldı. Kitaplığımda bulunan WinUser32.mqh başlığına bakmanız yeterli. Tüm kodlar var. Bu konuda zaten birkaç kez yazdım.
 
Zhunko :
Orada, başlıkta, kod ve bir örnek.


Bu konuyla ilgili bir örnek olduğunu düşündüğünüzü buraya kopyalayın?!

Sadece şunu buldum:

// 3.1.1. İşlev, belirtilen grafiğin otomatik kaydırılmasını etkinleştirir/devre dışı bırakır.
geçersiz ServiceAutoScroll(int hwndChart); // Otomatik kaydırmanın devre dışı bırakıldığı grafik penceresine giden sistem tutamacı.
//============================================== ================================================== ================================================== ==============
// 3.1.2. İşlev, belirtilen grafiğin ofsetini etkinleştirir/devre dışı bırakır. Başarılı olursa, yöntem TRUE, değilse FALSE döndürür.
bool ServiceShift(int hwndChart); // Ofsetin etkinleştirildiği/devre dışı bırakıldığı grafik penceresinin sistem tutamacı.

Ama gerekli değil!

 
LEOK :

Bu konuyla ilgili bir örnek olduğunu düşündüğünüzü buraya kopyalayın?!
Ve kendin gör?
 

Eğer işlev buysa, o zaman hala iç kısmına ihtiyacım var ...

// 3.2.1. İşlev, belirtilen grafikte otomatik kaydırma durumunu döndürür. İşlev başarılıysa TRUE, değilse FALSE döndürür.
bool ServiceGetAutoScroll(int hwndChart); // Otomatik kaydırma durumunun döndürüldüğü grafik penceresinin sistem tanıtıcısı.

 
LEOK :


Bu konuyla ilgili bir örnek olduğunu düşündüğünüzü buraya kopyalayın?!

Sadece şunu buldum:

// 3.1.1. İşlev, belirtilen grafiğin otomatik kaydırılmasını etkinleştirir/devre dışı bırakır.
geçersiz ServiceAutoScroll(int hwndChart); // Otomatik kaydırmanın devre dışı bırakıldığı grafik penceresine giden sistem tutamacı.

// 3.1.2. İşlev, belirtilen grafiğin ofsetini etkinleştirir/devre dışı bırakır. Başarılı olursa, yöntem TRUE, aksi takdirde FALSE döndürür.
bool ServiceShift(int hwndChart); // Ofsetin etkinleştirildiği/devre dışı bırakıldığı grafik penceresinin sistem tutamacı.

Ama gerekli değil!

Kütüphaneden bahsetmedim. Ama eğer bir kütüphaneden bahsediyorsak, o zaman bir fonksiyon var:

 // 3.2.1. Функция возвращает состояние автопрокрутки на указанном графике. В случае успеха функция возвращает TRUE, иначе - FALSE.
 bool ServiceGetAutoScroll( int hwndChart); // Системный дескриптор окна графика, с которого возвращается состояние автопрокрутки.
Yukarıda WinUser32.mqh hakkında yazdım. Kontrol kodları var.