MetaTrader 5의 다음 릴리스에서 부동 창 - 페이지 2

 
터미널이 좋아지고 있습니다!
 
Sergey Savinkin :
공간을 절약하기 위해 차트 창의 두꺼운 테두리를 줄이거나 숨길 수 있습니까?

이 스크립트로 확인할 수 있습니다. 이제 그들은 일하고 있습니다.

프레임 제거 코드

 //#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);
   }
}

프레임 반환 코드입니다.

 //#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 :

이 스크립트로 확인할 수 있습니다. 이제 그들은 일하고 있습니다.

프레임 제거 코드

프레임 반환 코드입니다.

고맙습니다. 그러나 이것은 아마도 터미널을 시작할 때마다 실행해야 합니까? 또한 각 차트에서.

 

좋은 소식.

특히 패널에서 거래하는 경우.

 
Sergey Savinkin :

고맙습니다. 그러나 이것은 아마도 터미널을 시작할 때마다 실행해야 합니까? 또한 각 차트에서.

모든 차트에 있는 것은 아니지만 확실합니다. 나는 MT4와 모든 창에 대해 동시에 그리고 각 창에 대해 별도로 가지고 있었습니다. 하지만 시행착오를 거쳐 이 것들만 MT5용으로 다시 만들었습니다. 그러나 터미널을 다시 시작했을 때주의를 기울이지 않았습니다. 여하튼 나는 여러 창을 열어 두지 않고 실제로 이러한 스크립트를 사용하지 않습니다.

 

Always on top은 대부분 수행되지만 투명도는 그렇지 않습니다. 우리는 아직 창틀을 만지지 않습니다.

창의 상태를 관리하는 것은 conda이며 캔버스 또는 개체에 모든 것을 직접 그립니다.

 
Renat Fatkhullin :

Always on top은 대부분 수행되지만 투명도는 그렇지 않습니다. 우리는 아직 창틀을 만지지 않습니다.

창의 상태를 관리하는 것은 conda이며 캔버스 또는 개체에 모든 것을 직접 그립니다.

레나트, 좋은 소식입니다.

그리고 MDI와 같은 다른 화면에서 창을 관리할 수 있습니까? 모든 종류의 수평 타일 등.

 
Mesaoria :

레나트, 좋은 소식입니다.

그리고 MDI와 같은 다른 화면에서 창을 관리할 수 있습니까? 모든 종류의 수평 타일 등.

이것은 수동 작업이며 자동화할 계획이 없습니다.
 
Vitaly Muzichenko :

그리고 저는 17살이 되었습니다 :)

그리고 당신은 17 배 더 벌 것입니다))


 
Alexey Volchanskiy :

그리고 당신은 17 배 더 벌 것입니다))

아니요, 전체 화면에서 기호를 여는 것이 편리할 것입니다. 이제 차트가 4개 이상 열려 있으면 차트 분석이 매우 불편하며, 이것은 27번째 모니터에 있습니다. 15개의 작업 기호가 있으며 시장 상황을 분석하려면 3개의 추가 창이 필요합니다(총 18개).

따라서 창 분리는 좋은 소식입니다!