Друзья, помогите с CSocket::OnReceive
то есть все сделать на основе WinSock и функции send/recv ?
но тогда ведь прийдется намертво зацикливать функцию проверки пришедших данных ?
- msdn.microsoft.com
К сожалению, внутри MQL5 нельзя организовывать асинхронные вызовы по вполне понятным техническим причинам.
я просто планировал сделать такую простую связку - получаю CSocket::OnReceive -> в ней SendMessage(WM_KEYDOWN) на окно чарта о нотификации что есть данные -> и далее MQL вычитывает по Receive в фунции OnChartEvent.
но вот как раза до первой цепочки - OnReceive - событие из недр винды не доходит. а так бы было красиво... :)
попробую винсок прямо в mql импортнуть, без промежуточной dll. И сам скрипт MQL зациклить на таймер или чартевент на себя.
В обычном диалоговом приложении все отрабатывает четко. Отправка по Send, прием по событию на OnReceive без проблем.
Но при переносе класса в dll - функция OnReceive не вызывается.
то есть начало отрабатывает нормально (Create/Connect), и функция отправки Send работает. Но функция OnReceive, для инициализации приема не вызывается.
В гугле уже обчитался, эта проблема частая, но предлагаемого решения не нашел.
Моя догадка, что вызов события до сокета почему то не передается. Причина может быть, что поток этой dll, в котором сокет создается, не отправляет его окну (CSocketWnd) требуемое событие, ну и как следствие OnReceive не вызывается.
Может надо окно создать и в нем сокет.
Или UI-поток ? С потоком кстати я пытался сделать (AfxBeginThread), но OnReceive тоже не заработал.
Помогите советом или кодом, кто чем может, а то затраха замучился с ним.
вот весь код что в DLL