Fazendo um projeto de crowdsourced em Tela - página 8

 
o_O:

OK.

o CFrame é claro.

---

Eu notei que você seguiu o caminho onde os blocos de gui são representados cada um por seu próprio bitmap.

um ponto importante para quem lê e já começou a pensar nisso:
deve trabalhar apenas em um bitmap, com todos os elementos de engano apresentados nele. Incluindo a ordem z.
Neste caso, haverá mais possibilidades de renderização. (sombras, gradientes, etc.)
E o controle é simplificado (não iremos para o nível de objetos MT)

IMHO, cada janela de aplicação individual (diálogo) deve ter seu próprio bitmap e objeto no gráfico (não considere sequer o caso em que múltiplos EAs ou indicadores "violarão" um único recurso de bitmap).
Neste caso, a sombra de uma janela pode ser implementada como um bitmap de canal alfa e assim remover a carga computacional do cálculo desta sombra.
Todos os elementos da GUI de uma única janela são desenhados em seu bitmap considerando a ordem Z e o aninhamento (não sei como chamar corretamente o aninhamento de objetos GUI)

Monitorar eventos do mouse através de CHARTEVENT_MOUSE_MOVE, eu fiz isso em meus projetos, não foram encontrados atrasos.
Não foi possível utilizar outros eventos sem perda da qualidade de entrada do mouse.
 
Para meus projetos MQL, quero trazer a biblioteca GUI para o analógico WPF, onde a marcação e os eventos são descritos em um arquivo de texto (por exemplo, XML).

Resta-me apenas implementar os eventos que o motor GUI chamará de acordo com a descrição no arquivo de texto.
 
Zorro:
IMHO, cada janela de aplicação individual (diálogo) deve ter seu próprio bitmap e objeto no gráfico (não considerar sequer o caso em que múltiplos EAs ou indicadores "abusarão" de um recurso de bitmap).
Neste caso, a sombra de uma janela pode ser implementada como um bitmap de canal alfa e assim remover a carga computacional do cálculo desta sombra.
Todos os elementos GUI de uma única janela são desenhados em seu bitmap considerando a ordem Z e o agrupamento (eu não sei como chamar o agrupamento de objetos GUI)

isto é correto.

Eu acrescentaria que não apenas "cada diálogo", mas especificamente um bitmap por especialista/indicador. Mais é possível, mas isso fica a critério do codificador.

Eu acho que quando você tem um diálogo de trabalho sobre bitmap, então adicione janelas modais no mesmo bitmap ou outro diálogo sobre o mesmo bitmap - uma questão de técnica e não uma questão de princípio agora.

Antes de mais nada, fazemos um modelo abstrato sem especificações, por exemplo, quais janelas estão localizadas onde, etc.

Então você será capaz de cobrir todas as diferentes características e comportamentos

 
o_O:

Codificadores de saudação.

Há uma tarefa interessante para fazer algo realmente útil, e eu acho que o crowdsourcing seria uma boa opção.
Primeiro, os resultados estarão disponíveis para todos nos estágios iniciais. Em segundo lugar, faremos algo novo usando MQL. E talvez até mesmo vamos pedir aos desenvolvedores de MT novos produtos.

----

Portanto, esta é a primeira e básica tarefa.

1. Precisamos fazer uma classe de botão (digamos GButton, prefixado com G para não confundir com os já existentes).
- Até agora o botão é simples com texto (sem imagens extras)
- o botão é desenhado em uma determinada área da tela
- o botão tem um evento de clique.



---
Com o tempo, faremos os códigos no bitbucket.

Estou seguindo-o com interesse e gostaria de interferir um pouco: imho developer (como eu) investiria em GUI lotada, se esta GUI puder ser desenhada não apenas por meio de terminal. Vou explicar - uma boa GUI é boa, é uma vantagem para as vendas...mas por enquanto, não corrói os recursos. Seria ideal ter uma biblioteca GUI que pudesse mudar o back-end. Por exemplo, enquanto eu não sou muito anal sobre recursos - deixe-o ser desenhado por terminal em tela (demos/market), mas assim que algo sério - desenhe-o através de ferramentas rápidas em bitmap. Há todos os tipos de cairo (sem mencionar o OpenGL) que tratam do desenho mais facilmente.

A GUI ideal é projetada em uma aplicação separada e importada como XML, por exemplo. Não é uma boa idéia descrever a localização de botões e formas de diálogo em um EA.
 
Exemplo, esquemático:

Layout:
<sample>
   <window
     name='Sample'
     caption='Sample'
     x=0
     y=0
     width=320
     height=240
     OnClose='CloseApp'>

     <button caption='Exit' x y width height OnClick='ButtonExitClick'/>    

   </window>

</sample>
Implementação de eventos:
class SampleCloseAction : public CloseAction
  {
public:
               SampleCloseAction() { SetActionName("CloseApp"); }
   virtual int Execute() { Print('Bye'); return(0); }
  };

class ButtonExitAction : public ButtonClickAction
  {
public:
               ButtonExitAction() { SetActionName("ButtonExitClick"); }
   virtual int Execute() { GUI::WindowClose('Sample'); return(0); }
  };

BaseAction *actions[];

actions[0]=new SampleCloseAction;
actions[1]=new ButtonExitAction;

GUI::WindowCreate('Sample',actions);
 
Maxim Kuznetsov:

Em geral, seria ideal ter uma GUI projetada em uma aplicação separada e importada como XML, por exemplo. Não é uma boa idéia escrever o layout de botões e formulários de diálogo no Expert Advisor.

lá )

você chega à nossa primeira tarefa, o que faremos após a criação dos elementos.

 
Maxim Kuznetsov:
Em geral, seria ideal ter uma GUI projetada em uma aplicação separada e importada como XML, por exemplo. Não é uma boa idéia escrever esquemas de botões e formas de diálogo em um EA.
Neste caso, primeiro de tudo, você deve escrever um analisador XML rápido e bom. É uma coisa boa ter em casa. Eu mesmo uso uma versão do CodeBase, ela é muito lenta para algumas tarefas, especialmente para novas construções. Eu já tenho todos estes remendos e muletas dentro. Em geral, escreva um bom parser camaradas! Tornar tudo mais fácil para todos.
 
Vasiliy Sokolov:
Nesse caso, você deve começar por escrever um analisador de XML rápido e bom. É uma coisa muito útil de se ter em casa. Eu mesmo estou usando uma versão do CodeBase, mas é muito lento em algumas tarefas, especialmente em novas construções. Eu já tenho todos estes remendos e muletas dentro. Em geral, escreva um bom parser camaradas! Tornar tudo mais fácil para todos.
Talvez você saiba como fazer um deslizador totalmente funcional e totalmente desenhado? Em termos gerais, pelo menos... Eu gostaria de entender o conceito geral.
 
Реter Konow:
Talvez você saiba como fazer um deslizador funcional e totalmente desenhado? Em termos gerais, pelo menos... Eu gostaria de aprender o conceito geral.
Infelizmente, eu não posso. É um elemento bastante complicado, mesmo se você o criar com base em primitivos normais.
 
Реter Konow:
Talvez você saiba como fazer um deslizador totalmente funcional e totalmente desenhado? Em termos gerais, pelo menos... Eu gostaria de aprender o conceito geral.

Todos os produtos primitivos estão disponíveis na classe CCanvas.

Em segundo lugar, você pode carregar bmp para seus emfs e embaralhá-los a la BitBlt na tela.