MetaTrader 4 Build 529 beta lançado com novo compilador - página 150

 

Por que ao implementar:

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) {
   if(CHARTEVENT_CHART_CHANGE) Alert("Event start, size window = "+ChartWidthInPixels());
}

o terminal reage não só ao redimensionamento da carta, mas também a qualquer movimento do mouse?

 
Barbarian:

Por que ao implementar:

terminal reage não apenas ao redimensionamento do gráfico, mas também a qualquer movimento do mouse?


O mais provável é que tenha sido projetado dessa forma, verifique se você pode obter coordenadas do mouse em tempo real, assim como a posição do clique...

Foi observado que se o terminal estiver em segundo plano e qualquer outro software estiver em primeiro plano, o terminal ainda recebe informações do mouse ao passar o mouse sobre a tabela de terminais em segundo plano ....

 
VOLDEMAR:


O mais provável é que tenha sido projetado dessa forma, verifique se você pode obter coordenadas do mouse e cliques em tempo real...

Notou-se que se o terminal estiver no segundo plano de fundo e qualquer outro software estiver no primeiro, então ao passar o mouse sobre o gráfico do terminal em segundo plano, o terminal ainda recebe informações do mouse ......

Sim, mas isso está especificado na ajuda:

Mouse move e clique com o mouse (se CHART_EVENT_MOUSE_MOVE= propriedade verdadeira do gráfico)

Tenho esta propriedade definida como falsa. Como posso desativar a resposta do mouse? Eu só preciso redimensionar a tabela.
 
Barbarian:

Por que ao implementar:

o terminal reage não só ao redimensionamento da carta, mas também a qualquer movimento do mouse?


Deveria ser assim:

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) {
   if(id==CHARTEVENT_CHART_CHANGE) Alert("Event start, size window = "+ChartWidthInPixels());
}
 
Wahoo:


Tem que ser:

Obrigado, está funcionando como deveria :)
 
Alguém me dê uma resposta para o post https://www.mql5.com/ru/forum/147679/page152#888374
 
VOLDEMAR:
Alguém me dê uma resposta para o post https://www.mql5.com/ru/forum/147679/page152#888374

Eu uso CCanvas - menos escrita e mais fácil de trabalhar (copiar, criar matrizes, etc.).

Como trabalhar com a API gráfica básica pode ser entendida analisando o exemplo do fabricante - a mesma classe CCanvas na biblioteca padrão.

Um exemplo de CCanvas (e não só) está incluído no trailer. // Exemplo quase inalterado de cinco.

Arquivos anexados:
 
MetaDriver:

Eu uso CCanvas - menos escrita e mais fácil de trabalhar (copiar, criar matrizes, etc.).

Como trabalhar com a API gráfica básica pode ser entendida analisando o exemplo do fabricante - a mesma classe CCanvas na biblioteca padrão.

O exemplo do CCanvas (e não só) está incluído no trailer. // O exemplo é quase inalterado, adotado a partir de Cinco.

Acho que não é muito correto fazer isso dessa maneira:

CCanvas * Label;

int OnInit() {
   Label = new CCanvas();
   //некий код
}
void DeInit() {
   delete Label;
}
Talvez essa seja a coisa certa a fazer:
CCanvas * Label = new CCanvas();

int OnInit() {
   //некий код
}
void DeInit() {
   delete Label;
}
 
Barbarian:

Não acho que isso seja a coisa certa a fazer:

Talvez esta seja a maneira correta de fazer isso:
Ambos estão corretos.
 
VOLDEMAR:
Alguém me dê uma resposta para o post https://www.mql5.com/ru/forum/147679/page152#888374

O texto tem que ser criado separadamente. Em cima do rótulo. Ou você pode usar o objeto Button, onde o texto pode ser definido de uma só vez.