Скрипты: Transparent MetaTrader 5 - страница 2

 

Изменения в версиях: 

Версия 1.20: При повторном присоединении к графику, терминал становится снова непрозрачным.

На данный момент версия 1.2 отправлена на модерацию.  

 
Здравствуйте! Помогите найти скрип для установки стоплосс для мт5 . торгую ртс
 

Изменения в:

Версия 1.20: При повторном присоединении к расписанию терминал становится непрозрачным.

 

Версия 1.10: Поддержка Windows XP 32-bit.

вы все испортили.

вы обязаны были сделать два варианта вызова DLL функций для 32 и 64 хендлов/указателей

пример

 

barabashkakvn:

Версия 1.10: Поддержка Windows XP 32-bit.

sergeev:

вы все испортили.

вы обязаны были сделать два варианта вызова DLL функций для 32 и 64 хендлов/указателей

пример 

Спасибо за пример! Сразу исправить не обещаю, так как нужно решить вопрос: какие функции содержит библиотека user32.dll в операционной системе от Windows XP до Windows 8.1, причём нужно учесть битность системы.
 
У меня есть подозрение что в 900 или 910 билде МТ5 поломан механизм вызова DLL. Заявка в сервисдеске #976227. Падения могут быть и с этим связаны. Господа разработчики, посмотрите пожалуйста туда...
 
Очень интересно!)
 
micle:
У меня есть подозрение что в 900 или 910 билде МТ5 поломан механизм вызова DLL. Заявка в сервисдеске #976227. Падения могут быть и с этим связаны. Господа разработчики, посмотрите пожалуйста туда...
Моя проблема решилась другим объявлением функции... Век живи и век учись )
 
barabashkakvn:

Изменения в:

Версия 1.20: При повторном вступлении в расписание терминал становится непрозрачным.

На английской кодовой базе доступной версией по-прежнему является 1.10.
 

Версия 1.20

//+------------------------------------------------------------------+
//|прозрачность.mq5 |
//|Copyright © 2014, Владимир Карпутов |
//|http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, Владимир Карпутов"
#property link      "http://wmua.ru/slesar/"
#property version   "1.20"
#import "user32.dll"
//+------------------------------------------------------------------+
//| GetAncestor. Получает хэндл предка данного объекта |
//| указанное окно. Извлекает дескриптор предка заданного окна |
//+------------------------------------------------------------------+
int GetAncestor(int hwnd,int gaFlags);
//+------------------------------------------------------------------+
//| GetWindowLongW. Получает информацию об указанном окне |
//| window. Получает информацию об указанном окне |
//+------------------------------------------------------------------+
int GetWindowLongW(
                   int hWnd,
                   int nIndex          // GWL_EXSTYLE
                   );
//+------------------------------------------------------------------+
//| SetWindowLongW. Изменяет атрибут заданного окна |
//+------------------------------------------------------------------+
int SetWindowLongW(
                   int hWnd,
                   char nIndex,        // GWL_EXSTYLE
                   int dwNewLong       // WS_EX_LAYERED
                   );
//+------------------------------------------------------------------+
//| SetLayeredWindowAttributes. Устанавливает непрозрачность и прозрачность |
//| цветовой ключ многослойного окна. Устанавливает светопроницаемость |
//| и прозрачность окраски многослойного окна |
//+------------------------------------------------------------------+
bool SetLayeredWindowAttributes(
                                int hwnd,// Обращение к многослойному окну
                                int crKey,   // 0
                                int bAlpha,  // степень непрозрачности 0-255
                                int dwFlags  // 0x00000002
                                );
#import
#define   GA_ROOT           0x0002      // Извлекает корневое окно, проходя по цепочке родительских окон.
#define   GWL_EXSTYLE       -20               // Устанавливает новый расширенный стиль окна
#define   WS_EX_LAYERED     0x00080000        // Стиль. Окно представляет собой многослойное окно. 
#define   LWA_ALPHA         0x00000002        // Используйте bAlpha для определения непрозрачности многослойного окна.
//+------------------------------------------------------------------+
//| Функция запуска программы сценария|
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long  mainChartID=ChartID();         // возвращает идентификатор текущего графика
   int   hdlmainChartID=ChartWindowsHandle(mainChartID);
   int   hdlRoot=GetAncestor(hdlmainChartID,GA_ROOT);
   int   SetWindowLongW_func;
   if(GetWindowLongW(hdlRoot,GWL_EXSTYLE)&WS_EX_LAYERED)
     {
      // У окна уже есть стиль WS_EX_LAYERED. Удалим WS_EX_LAYERED из этого окна стилей.
      // У окна уже есть стиль WS_EX_LAYERED. Удалите WS_EX_LAYERED из стилей этого окна.
      SetWindowLongW_func=SetWindowLongW(hdlRoot,GWL_EXSTYLE,
                                         GetWindowLongW(hdlRoot,GWL_EXSTYLE)&~WS_EX_LAYERED);
      return;
     }
// Устанавливаем WS_EX_LAYERED на окно ROOT
   SetWindowLongW_func=SetWindowLongW(hdlRoot,GWL_EXSTYLE,
                                      GetWindowLongW(hdlRoot,GWL_EXSTYLE)|WS_EX_LAYERED);
   SetLayeredWindowAttributes(hdlRoot,0,(255*70)/100,LWA_ALPHA);
   return;
  }
//+------------------------------------------------------------------+
//| Функция получает графический ключ.|
//| Функция получает хэндл-график|
//+------------------------------------------------------------------+
int ChartWindowsHandle(long chart_ID)
  {
//--- подготовьте переменную для получения значения свойства
//--- подготовим переменную для получения значения свойств
   long result=-1;
//--- сбросьте значение ошибки
//--- сбросим значение ошибки
   ResetLastError();
//--- получите значение свойства
//--- получим значение свойств
   if(!ChartGetInteger(chart_ID,CHART_WINDOW_HANDLE,0,result))
     {
      //--- выведите сообщение об ошибке в журнале Experts
      //--- выведем сообщение об ошибке в журнале "Эксперты".
      Print(__FUNCTION__+", Error Code = ",GetLastError());
     }
//--- верните значение свойства графика
//--- вернем значение свойства графика
   return((int)result);
  }
//+------------------------------------------------------------------+