下一版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重新制作了这些。不过,在重启终端时,我没有注意它们。不知何故,我没有保持打开几个窗口,实际上也没有使用这些脚本。

 

总是在上面可能会做,但不是透明。我们还不会碰窗框。

窗口状态控制是指你自己在画布或对象上绘制一切。

 
Renat Fatkhullin:

我们很可能在上面做总是,但不是透明。我们暂时不打算触碰窗框。

窗口状态控制是指你自己在画布或物体上绘制所有的东西。

雷纳特,好消息。

是否可以像MDI那样,在不同的屏幕内管理窗口?我们可能会做各种各样的Tile Horizontally等等。

 
Mesaoria:

雷纳特,好消息。

是否可以像MDI那样,在不同的屏幕内管理窗口?横向铺设,以此类推。

这是一项手工工作,我们不打算将其自动化。
 
Vitaly Muzichenko:

而我仍然是17岁 :)

而你的收入将达到17倍之多 ))


 
Alexey Volchanskiy:

而且你会赚到17倍的钱 ))

不,只是在全屏下打开符号会很方便。现在,如果你打开了4个以上的图表,分析图表是非常不方便的,而且是在27英寸的显示器上进行分析。工作符号是15个,对于市场分析,我需要3个额外的窗口--总共18个窗口。

因此,窗户的分离是个好消息!