Чем заменить оператор while(true) - страница 2

 
Если вы тут споткнулись, то что же там в остальных 4000 строках кода? Боюсь даже представить себе
 
forex2030:

Проблема в том что когда работает бесконечный цикл проверки  while(true), то некоторые кнопки на торговой панели не нажимаются
(игнорируются кнопки закрытия позиций или кнопка свернуть панель),
а если убрать оператор  while(true), то панель моргает бесконечно

Чем можно заменить этот оператор чтобы и не моргало и кнопки нажимались?

чо за левый код?

проверяйте состояние соединения каждый тик

этого будет достаточно

а затем, либо то, либо другое

 
Ренат, ты как всегда, неотразим. 
 
Алексей Тарабанов:
Ренат, ты как всегда, неотразим. 

ты прав

я делаю такое в OnTimer()

 

Т.к. оператор  while(true) мне не убрать иначе будет всё моргать, я обошёл проблему нажатия кнопки на панели по другому и теперь всё в порядке
Теперь задача стоит в другом:
Как мне получить имя объекта при нажатии на него мышкой, но не используя OnChartEvent
Т.е. стандартно это делается так:

void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
   if(id==CHARTEVENT_OBJECT_CLICK)
      Print("sparam: ",sparam);
  }
 
forex2030:

Т.к. оператор  while(true) мне не убрать иначе будет всё моргать, я обошёл проблему нажатия кнопки на панели по другому и теперь всё в порядке
Теперь задача стоит в другом:
Как мне получить имя объекта при нажатии на него мышкой, но не используя OnChartEvent
Т.е. стандартно это делается так:

если "объект" это кнопка, то можно считывать её состояние . Подобным образом работают панельки в тестере (где OnChartEvent нету) - просто опросом состояния объектов

 
Maxim Kuznetsov:

если "объект" это кнопка, то можно считывать её состояние 

верно кнопка и их много
я добиваюсь чтобы при нажатии мышкой на кнопку получить имя в котором содержится тикет ордера и именно его надо закрыть

 
forex2030:

верно кнопка и их много
я добиваюсь чтобы при нажатии мышкой на кнопку получить имя в котором содержится тикет ордера и именно его надо закрыть

А как Вы узнаете, что была нажата клавиша мыши без OnChartEvent()?

 
Ihor Herasko:

А как Вы узнаете, что была нажата клавиша мыши без OnChartEvent()?

Пока ни как))
Ну есть же пути обхода наверно?

Типа такого, простого определения цены линии:

   double L = 0.0;

   L = ObjectGetValueByShift(Line,0);


У меня по коду работает всё, но из-за while(true) не реагирует OnChartEvent() (полностью заморожен)
Поэтому ищу альтернативу для определения объекта по нажатию мыши

 
forex2030:

Пока ни как))
Ну есть же пути обхода наверно?

Если задача - поймать именно клик мыши, то путей обхода нет.

Если задача - определить состояние кнопки, то за мышью следить и не нужно. Можно пройтись в цикле по всем кнопкам и проверить их статус. Но такой вариант менее предпочтителен. А вот обработка события - то, что нужно. И там, кстати, тоже не нужно следить за мышью. Есть события: клик на объекте, изменения объекта и т. д.

Типа такого, простого определения цены линии:

Так это вариант полного обхода всех объектов с целью определения изменения их состояния. Если объектов десяток-другой, то работать будет. А вот если объектов порядка 1000, то программа будет подвешивать терминал.

У меня по коду работает всё, но из-за while(true) не реагирует OnChartEvent() (полностью заморожен)

Поэтому ищу альтернативу для определения объекта по нажатию мыши

Используйте события. Зачем выдумываете велосипед? Ради мерцания? Проще с мерцанием разобраться.

Причина обращения: