Bibliotecas: Class СBmpButtonTransparent

 

Class СBmpButtonTransparent:

Esta classe permite pairar cursor e pressionar o botão de forma livre.

Autor: Andrey Miguzov

[Excluído]  
Olho para o código da classe CBmpButton da biblioteca MQL5 padrão e vejo a semelhança. É um acidente ou uma dessas classes serviu como protótipo?
 
Konstantin Karpov:
Olho para o código da classe CBmpButton da biblioteca MQL5 padrão e vejo a semelhança. É um acidente ou uma dessas classes serviu como protótipo?
Sim, é claro - a CBmpButton foi tomada como base. E 90% foi retrabalhado :) A classe principal CWndObj teve de ser ajustada um pouco com a ajuda da herança. Isso foi feito para compatibilidade com a biblioteca padrão.
[Excluído]  
Andrey Miguzov:
Sim, é claro - o CBmpButton foi usado como base. E 90% foi retrabalhado :) A classe principal CWndObj teve de ser ligeiramente modificada usando a herança. Isso foi feito para compatibilidade com a biblioteca padrão.
Então, por que os desenvolvedores não incluirão essa classe em sua biblioteca padrão, porque a classe é necessária. A propósito, seria bom obter uma descrição completa de seus métodos, pois é preciso entrar no código e ler os métodos, adivinhando para que eles são necessários....
 
Konstantin Karpov:
A propósito, seria bom obter uma descrição completa de seus métodos, porque você precisa entrar no código e ler os métodos, adivinhando para que eles são necessários....
Concordo. Vou acrescentar isso assim que tiver tempo.
[Excluído]  

Antes de fazer uma descrição, diga-me qual método altera a posição de um objeto gráfico no gráfico. O método Top(aLocation) da classe CWnd não altera a posição. Mas ele altera o local do clique como deveria, mas o objeto gráfico em si permanece no lugar. Entendo que não há vínculo entre o rótulo do objeto e o próprio objeto? Ou eu não estou entendendo nada...

Em geral, descobri como fazer isso: na classe CBmpButtonTransparent, abri o objeto m_button e, por meio de seu método Y_Distance, assim como no Top, inseri uma nova coordenada Y. Agora tudo funciona. Agora tudo funciona.

 
Konstantin Karpov:

Antes de fazer uma descrição, diga-me qual método altera a posição de um objeto gráfico no gráfico. O método Top(aLocation) da classe CWnd não altera a posição. Mas ele altera o local do clique como deveria, mas o objeto gráfico em si permanece no lugar. Entendo que não há vínculo entre o rótulo do objeto e o próprio objeto? Ou eu não estou entendendo nada...

Em geral, descobri como fazer isso: na classe CBmpButtonTransparent, abri o objeto m_button e, por meio de seu método Y_Distance, assim como no Top, inseri uma nova coordenada Y. Agora tudo funciona.

Não, essa não é a maneira de fazer isso. Encontrarei um exemplo e o carregarei. Eu mesmo fiz experiências com ele durante o concurso :)

É que o método move não pertence à minha classe - ele está implementado na biblioteca padrão.

Coloque a pasta com todo o seu conteúdo em Experts.

No arquivo Profit_button, veja as linhas 139-143 e 155-159.

//Money.Shift(0,-3);
//Button.Shift(x,0);

Money.Move(Money.Left(),Money.Top()-3);
Button.Move(Button.Left()+x,Button.Top());

Ele funciona das duas maneiras, dependendo da finalidade.

Antes de iniciar o Expert Advisor, expanda a janela para a tela inteira :)

Arquivos anexados:
Profit.zip  408 kb
[Excluído]  
Andrey Miguzov:

Não, não faça isso. Encontrarei um exemplo e o carregarei. Durante o concurso, eu mesmo fiz experiências com ele :)

É que o método move não pertence à minha classe - ele está implementado na biblioteca padrão.

Coloque a pasta com todo o seu conteúdo em Experts.

No arquivo Profit_button, consulte as linhas 139-143 e 155-159.

Ele funciona das duas maneiras, dependendo da finalidade.

Antes de iniciar o Expert Advisor, expanda a janela para a tela inteira :)

oops... :) e esse método eu havia esquecido por algum motivo, procurei e procurei em toda a ajuda da biblioteca padrão e, como dizem, vi uma figura :) oops... obrigado...
[Excluído]  
Andrey Miguzov:

Expanda a janela para a tela inteira antes de iniciar o Expert Advisor :)

Ótimo exemplo!