Скачать MetaTrader 5

Как узнать все WindowHandle окон в терминале?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Следи за новостями. Заходи на официальный канал нашей компании!
Дмитрий
418
Дмитрий 2009.09.15 22:35 

Добрый день.

Задача в узком рассмотрении: необходимо иметь возможность иметь несколько окон с одинаковым таймфремом и торговым

инструментом для индикатора Period_Converter_Opt.

В указанном индикаторе обновление графических данных окна находится в функции:

int UpdateChartWindow()
{
      static int hwnd = 0;
      
      if (FileHandle < 0)
      {     //no HST file opened, no need updating.
            return (-1);
      }
      
      if (hwnd == 0)
      {     //trying to detect the chart window for updating
            hwnd = WindowHandle(Symbol(), NewPeriod);
      }
      if (hwnd != 0)
      {
            if (IsDllsAllowed() == false)
            {     //DLL calls must be allowed
                  DebugMsg("Dll calls must be allowed");
                  return (-1);
            }
            if (PostMessageA(hwnd,WM_COMMAND,CHART_CMD_UPDATE_DATA,0) == 0)
            {     //PostMessage failed, chart window closed
                  hwnd = 0;
            }
            else
            {     //PostMessage succeed
                  return (0);
            }
      }
      //window not found or PostMessage failed
      return (-1);
}
Как видно: берется идентификатор первого найденного окна с подходящим ( Symbol(), NewPeriod ) и успешно через PostMessageA
перерисовывается окошко. Но вот как получить идентификатор второго окошка с таким же таймфреймом и торговым инструметом?
Задача в широком рассмотрении: как узнать все WindowHandle окон в терминале?

Большое спасибо, всем заинтересовавшемся.
Огромный почет тем, кто поможет делом!

Андрей
1890
Андрей 2009.09.15 22:37  

Подрубите Dll- дальше можно энумеровать чайлдовые окошки и вытаскивать их тайтлы.

Внешнее приложение не сможет захватить текст.

Дмитрий
418
Дмитрий 2009.09.15 22:39  
jartmailru >>:

Подрубите Dll- дальше можно энумеровать чайлдовые окошки и вытаскивать их тайтлы.

Внешнее приложение не сможет захватить текст.

помогите, примером, пожалуйста.

Alexey Subbotin
4998
Alexey Subbotin 2009.09.15 22:40  
jartmailru >>:
Подрубите Dll- дальше можно энумеровать чайлдовые окошки и вытаскивать их тайтлы.

посложнее, у окон графиков класс AfxFrameOrView, без тайтлов:(

Андрей
1890
Андрей 2009.09.15 22:41  
alsu >>:

посложнее, у окон графиков класс AfxFrameOrView, без тайтлов:(

+5 !!!! не человег- монстр! ;-)

.

Так-так... не верю! Все там с тайтлами!


Alexey Subbotin
4998
Alexey Subbotin 2009.09.15 22:42  
vedroid >>:

помогите, примером, пожалуйста.

чрез MFC да разрешатся проблемы

Alexey Subbotin
4998
Alexey Subbotin 2009.09.15 22:50  
jartmailru >>:


Так-так... не верю! Все там с тайтлами!


ну да, только WindowHandle возвращает хендл не окошек Afx:4000000:b:10011:6:6047d, а графиков, которые на них нарисованы - AfxFrameOrView42, а они без тайтла.

Alexey Subbotin
4998
Alexey Subbotin 2009.09.15 22:52  
хотя и у тех и у других одинаковый Parent, так что на него можно выйти и потом чайлдов перешерстить
Андрей
1890
Андрей 2009.09.15 22:52  
alsu >>:

ну да, только WindowHandle возвращает хендл не окошек Afx:4000000:b:10011:6:6047d, а графиков, которые на них нарисованы - AfxFrameOrView42, а они без тайтла.

А кто сказал юзать WindowHandle ? :-) Мсдна на Вас нету. :-)

Alexey Subbotin
4998
Alexey Subbotin 2009.09.15 23:00  
jartmailru >>:

А кто сказал юзать WindowHandle ? :-) Мсдна на Вас нету. :-)

в сабже написано WindowHandle, значит WindowHandle. Для решения задачи через мсдн предлагаю создать отдельную ветку:)))))))))))

Андрей
1890
Андрей 2009.09.15 23:04  
alsu >>:

в сабже написано WindowHandle, значит WindowHandle. Для решения задачи через мсдн предлагаю создать отдельную ветку:)))))))))))

Не всегда вопрос содержит ответ ;-).
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий