Discussão do artigo "WebRequest multi-threaded assíncrono em MQL5" - página 6

 
Mihail Matkovskij:
Qual deve ser o deslocamento (input int MessageBroadcast) para eventos do usuário se os elementos da interface do usuário da biblioteca padrão(Include\Controls\) forem usados no programa? Como posso descobrir isso?

Não sou um grande especialista em bibliotecas. A julgar pela definição de eventos no arquivo Defines.mqh, o índice máximo reservado é 100.

 
Stanislav Korotky:

Não sou um grande especialista na biblioteca. A julgar pela definição de eventos no arquivo Defines.mqh, o índice máximo reservado ali é 100.

//+------------------------------------------------------------------+
//| Eventos|
//+------------------------------------------------------------------+
#define  ON_CLICK                (0)   // clicando no evento de controle
#define  ON_DBL_CLICK            (1)   // clique duplo no evento de controle
#define  ON_SHOW                 (2)   // mostrando o evento de controle
#define  ON_HIDE                 (3)   // evento de controle oculto
#define  ON_CHANGE               (4)   // alteração do evento de controle
#define  ON_START_EDIT           (5)   // início do evento de edição
#define  ON_END_EDIT             (6)   // fim do evento de edição
#define  ON_SCROLL_INC           (7)   // incremento do evento da barra de rolagem
#define  ON_SCROLL_DEC           (8)   // diminuição do evento da barra de rolagem
#define  ON_MOUSE_FOCUS_SET      (9)   // o evento "o cursor do mouse entrou no controle
#define  ON_MOUSE_FOCUS_KILL     (10)  // o evento "o cursor do mouse saiu do controle
#define  ON_DRAG_START           (11)  // o evento "control dragging start" (início do arrasto do controle)
#define  ON_DRAG_PROCESS         (12)  // o evento "o controle está sendo arrastado"
#define  ON_DRAG_END             (13)  // o evento "control dragging end" (fim do arrastamento do controle)
#define  ON_BRING_TO_TOP         (14)  // o evento "aumento da prioridade dos eventos do mouse
#define  ON_APP_CLOSE            (100) // evento "fechar o aplicativo

Obviamente, de 15 a 99, os desenvolvedores deixaram uma reserva para o novo ID do evento. Mas, além disso, outra constante me chamou a atenção.

#define  CONTROLS_MAXIMUM_ID                 (10000)  // número máximo de IDs no aplicativo

Número máximo ou número máximo de ids no aplicativo. O que isso pode significar...?

 
Mihail Matkovskij:

Obviamente, de 15 a 99, os desenvolvedores deixaram uma margem para novos eventos de ID. Mas, além disso, outra constante me chamou a atenção.

Número máximo ou número máximo de ids no aplicativo. O que isso pode significar...?

De acordo com as palavras - identificadores de controle. Os controles não são eventos.

 
Stanislav Korotky:

A julgar pelas palavras - identificadores de controle. Os controles não são eventos.

Talvez... Mas ele não diz quais identificadores. Eu defini MessageBroadcast como 10000 e tudo funciona. Você pode definir até 1000000 ou mais, pois o tipo ushort permite isso. Embora mesmo com 100 não haja conflitos. De qualquer forma, qualquer elemento da interface do usuário tem seu próprio ID, que é verificado nas condições de processamento de eventos. Em geral, a probabilidade de operação normal é bastante alta.

 
Seria bom se o especialista principal pudesse obter a carga da CPU para saber quantas tarefas podem ser adicionadas para execução. Mas, infelizmente, não encontrei essa função na documentação.
 
Stanislav Korotky #:


Como isso seria projetado agora que existem serviços no MT5?

 
bot #:

Como isso seria projetado agora que existem serviços no MT5?

Não muda nada, pois não há uma maneira mais fácil de se comunicar com um serviço do MT5.
 

Really nice article. 

However I get issues when trying to compile with metatrader 5.

Initialize sequence for array expected:

   in template 'const TYPETOBYTES::STRUCT_TYPE<T> TYPETOBYTES::FillBytes(const uchar)' specified with [T=uchar] TypeToBytes.mqh 314 31

I understand that it is an issue initilizing the array. I could try to fix. However, I dont see any report of this issue, thinking whether it is only my self facing the issue.

Thanks for the article anywell, wonderful anyway!



 
magnomilk #:

Really nice article. 

However I get issues when trying to compile with metatrader 5.

Initialize sequence for array expected:

   in template 'const TYPETOBYTES::STRUCT_TYPE<T> TYPETOBYTES::FillBytes(const uchar)' specified with [T=uchar] TypeToBytes.mqh 314 31

I understand that it is an issue initilizing the array. I could try to fix. However, I dont see any report of this issue, thinking whether it is only my self facing the issue.

Thanks for the article anywell, wonderful anyway!



Make sure you're using the latest TypeToBytes library.

 
Igor K "WebRequest error code 4002"....


MetaTrader 5

Versão: 5.00 build 2093

02 de julho de 2019


===cortar aqui====

2019.07.23 00:47:37.182 multiwebclient (USDJPY,H1) Accepted: aQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::USDJPY_PERIOD_H1_2_128968169154443359 after 0 retries

2019.07.23 00:47:37.182 multiwebclient (USDJPY,H1) WebRequest error code 4002

===Corte aqui====


Somente as portas 80 (http) e 443 (https) são permitidas para o WebRequest.