Finestre fluttuanti nella prossima versione di MetaTrader 5 - pagina 2

 
Il terminale sta migliorando!
 
Sergey Savinkin:
Sarà possibile ridurre/nascondere le spesse cornici delle finestre del grafico per risparmiare spazio?

Potete controllare con questi script. Ora stanno lavorando.

Codice per rimuovere le cornici

//#property script_show_inputs
#import "user32.dll"
  int SetWindowLongA(int hWnd,int nIndex, int dwNewLong);
  int GetWindowLongA(int hWnd,int nIndex);
  int SetWindowPos(int hWnd, int hWndInsertAfter,int X, int Y, int cx, int cy, int uFlags);
  int GetParent(int hWnd);
  int GetTopWindow(int hWnd);
  int GetWindow(int hWnd, int wCmd);
#import

#define  GWL_STYLE         -16 
#define  WS_CAPTION        0x00C00000 
#define  WS_BORDER         0x00800000
#define  WS_SIZEBOX        0x00040000
#define  WS_DLGFRAME       0x00400000
#define  SWP_NOSIZE        0x0001
#define  SWP_NOMOVE        0x0002
#define  SWP_NOZORDER      0x0004
#define  SWP_NOACTIVATE    0x0010
#define  SWP_FRAMECHANGED  0x0020
#define  GW_CHILD          0x0005
#define  GW_HWNDNEXT       0x0002

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int OnStart() 
{
   int hChartParent = GetParent((int)ChartGetInteger(ChartID(), CHART_WINDOW_HANDLE));    
   int hMDIClient = GetParent(hChartParent); 
   int hChildWindow = GetTopWindow(hMDIClient);
   while (hChildWindow > 0)
   {
      RemoveBorderByWindowHandle(hChildWindow);
      hChildWindow = GetWindow(hChildWindow, GW_HWNDNEXT);
   }
 
   
   return(0);
}
void RemoveBorderByWindowHandle(int hWindow)
{
   int iNewStyle = GetWindowLongA(hWindow, GWL_STYLE) & (~(WS_BORDER | WS_DLGFRAME | WS_SIZEBOX));    
   if (hWindow>0 && iNewStyle>0) 
   {
      SetWindowLongA(hWindow, GWL_STYLE, iNewStyle);
      SetWindowPos(hWindow,0, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_FRAMECHANGED);
   }
}

Il codice per rimettere le cornici.

//#property script_show_inputs
#import "user32.dll"
  int SetWindowLongA(int hWnd,int nIndex, int dwNewLong);
  int GetWindowLongA(int hWnd,int nIndex);
  int SetWindowPos(int hWnd, int hWndInsertAfter,int X, int Y, int cx, int cy, int uFlags);
  int GetParent(int hWnd);
  int GetTopWindow(int hWnd);
  int GetWindow(int hWnd, int wCmd);
#import

#define  GWL_STYLE         -16 
#define  WS_CAPTION        0x00C00000 
#define  WS_BORDER         0x00800000
#define  WS_SIZEBOX        0x00040000
#define  WS_DLGFRAME       0x00400000
#define  SWP_NOSIZE        0x0001
#define  SWP_NOMOVE        0x0002
#define  SWP_NOZORDER      0x0004
#define  SWP_NOACTIVATE    0x0010
#define  SWP_FRAMECHANGED  0x0020
#define  GW_CHILD          0x0005
#define  GW_HWNDNEXT       0x0002

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int OnStart() 
{
   int hChartParent = GetParent((int)ChartGetInteger(ChartID(), CHART_WINDOW_HANDLE));    
   int hMDIClient = GetParent(hChartParent); 
   int hChildWindow = GetTopWindow(hMDIClient);
   while (hChildWindow > 0)
   {
      RemoveBorderByWindowHandle(hChildWindow);
      hChildWindow = GetWindow(hChildWindow, GW_HWNDNEXT);
   }
 
   
   return(0);
}
void RemoveBorderByWindowHandle(int hWindow)
{
   int iNewStyle = GetWindowLongA(hWindow, GWL_STYLE) | ((WS_BORDER | WS_DLGFRAME | WS_SIZEBOX));    
   if (hWindow>0 && iNewStyle>0) 
   {
      SetWindowLongA(hWindow, GWL_STYLE, iNewStyle);
      SetWindowPos(hWindow,0, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_FRAMECHANGED);
   }
}
 
Alexey Viktorov:

Potete controllare con questi script. Ora stanno lavorando.

Codice per rimuovere le cornici

Il codice per rimettere le cornici.

Grazie. Ma questo probabilmente dovrà essere eseguito ogni volta che il terminale viene avviato? Anche su ogni grafico.

 

grandi notizie.

specialmente per il commercio da pannelli.

 
Sergey Savinkin:

Grazie. Ma questo dovrebbe probabilmente essere eseguito ogni volta che il terminale viene avviato? Anche su ogni grafico.

Non su tutte le carte, questo è sicuro. L'avevo per MT4 e per tutte le finestre contemporaneamente e per ogni finestra separatamente. Ma per tentativi ed errori ho rifatto solo questi per MT5. Non ci ho fatto caso quando ho riavviato il terminale, però. In qualche modo, non tengo diverse finestre aperte e praticamente non uso questi script.

 

Sempre in cima sarà probabilmente fatto, ma non la trasparenza. Non toccheremo ancora i telai delle finestre.

Il controllo dello stato della finestra è quando si disegna tutto da soli sulla tela o sugli oggetti.

 
Renat Fatkhullin:

Molto probabilmente faremo sempre sopra, ma non la trasparenza. Non toccheremo il telaio della finestra per ora.

Gestire lo stato della finestra è quando si disegna tutto da soli sulla tela o sugli oggetti.

Renat, ottime notizie.

Sarà possibile gestire le finestre all'interno di schermi diversi, come MDI? Probabilmente faremo tutti i tipi di Tile Horizontally e così via.

 
Mesaoria:

Renat, ottime notizie.

Sarà possibile gestire le finestre all'interno di schermi diversi, come MDI? Tile Horizontally e così via.

È un lavoro manuale, non abbiamo intenzione di automatizzarlo.
 
Vitaly Muzichenko:

E ho ancora 17 anni :)

E guadagnerai 17 volte tanto ))


 
Alexey Volchanskiy:

E farai 17 volte più soldi ))

No, sarebbe solo comodo aprire i simboli a schermo intero. In questo momento, se hai più di 4 grafici aperti, è estremamente scomodo analizzare i grafici, e questo su un monitor 27. I simboli di lavoro sono 15 e per l'analisi di mercato ho bisogno di 3 finestre aggiuntive - un totale di 18 finestre.

Quindi la separazione delle finestre è una grande notizia!

Motivazione: