Problema ao fechar uma CAppDialog e a outra fecha junto

Roco Deodato Giaculi  

Boa noite pessoal, tudo bem?

Estou com o seguinte problema. 

Adicionei duas CAppDialog no EA, porém quando clico no X para fechar uma CAppDialog, ambas são fechadas.

Não consegui fazer com que cada uma feche independente ao clicar no X da CAppDialog.

Se puderem ajudar, agradeço.


//+------------------------------------------------------------------+
//|                                     AppWindowTwoButtonsClass.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.000"
#property description "Painéis de Controle e Caixas de Diálogos. Classe de demonstração da CButton"
#include <Controls\Dialog.mqh>
#include <Controls\Button.mqh>
//+------------------------------------------------------------------+
//| defines                                                          |
//+------------------------------------------------------------------+
//--- recuos e gaps
#define INDENT_LEFT                         (11)      // recuo da esquerda (com permissão para a largura da borda)
#define INDENT_TOP                          (11)      // recuo da parte superior (com permissão para a largura da borda)
#define CONTROLS_GAP_X                      (5)       // gap pela coordenada X
//--- para os botões
#define BUTTON_WIDTH                        (100)     // tamanho pela coordenada X
#define BUTTON_HEIGHT                       (20)      // tamanho pela coordenada Y
//---
//+------------------------------------------------------------------+
//| Classe CAppWindowTwoButtons                                      |
//| Uso: caixa de diálogo principal do aplicativo Controls           |
//+------------------------------------------------------------------+
class CAppWindowTwoButtons : public CAppDialog
  {
private:
   CButton           m_button1;                       // o objeto button
   CButton           m_button2;                       // o objeto button

public:
                     CAppWindowTwoButtons(void);
                    ~CAppWindowTwoButtons(void);
   //--- create
   virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);

protected:
   //--- cria os controles dependentes
   bool              CreateButton1(void);
   bool              CreateButton2(void);

  };
//+------------------------------------------------------------------+
//| Construtor                                                       |
//+------------------------------------------------------------------+
CAppWindowTwoButtons::CAppWindowTwoButtons(void)
  {
  }
//+------------------------------------------------------------------+
//| Destrutor                                                        |
//+------------------------------------------------------------------+
CAppWindowTwoButtons::~CAppWindowTwoButtons(void)
  {
  }
//+------------------------------------------------------------------+
//| Create                                                           |
//+------------------------------------------------------------------+
bool CAppWindowTwoButtons::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
   if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
      return(false);
//--- cria os controles dependentes
   if(!CreateButton1())
      return(false);
   if(!CreateButton2())
      return(false);
//--- sucesso
   return(true);
  }
  
//+------------------------------------------------------------------+
//| Classe CAppWindow2                                      |
//| Uso: caixa de diálogo principal do aplicativo Controls           |
//+------------------------------------------------------------------+
class CAppWindow2 : public CAppDialog
  {
private:

public:
                     CAppWindow2(void);
                    ~CAppWindow2(void);
   //--- create
   virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);

protected:


  };
  
//+------------------------------------------------------------------+
//| Construtor                                                       |
//+------------------------------------------------------------------+
CAppWindow2::CAppWindow2(void)
  {
  }
//+------------------------------------------------------------------+
//| Destrutor                                                        |
//+------------------------------------------------------------------+
CAppWindow2::~CAppWindow2(void)
  {
  }
//+------------------------------------------------------------------+
//| Create                                                           |
//+------------------------------------------------------------------+
bool CAppWindow2::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
   if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
      return(false);
//--- sucesso
   return(true);
  }  
  
//+------------------------------------------------------------------+
//| Variável Global                                                  |
//+------------------------------------------------------------------+
CAppWindowTwoButtons ExtDialog;
CAppWindow2 ExtDialog2;
//+------------------------------------------------------------------+
//| Função de inicialização do Expert                                |
//+------------------------------------------------------------------+
int OnInit()
  {
//---Cria o diálogo do aplicativo
   if(!ExtDialog.Create(0,"AppWindowClass with Two Buttons",0,40,40,380,344))
      return(INIT_FAILED);
//---Execução da aplicação
   ExtDialog.Run();
   
//---Cria o diálogo do aplicativo
   if(!ExtDialog2.Create(0,"AppWindow2",0,380,20,680,324))
      return(INIT_FAILED);
//---Execução da aplicação
   ExtDialog.Run();

//--- sucesso
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Função de desinicialização do Expert                             |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Comment("");
//--- destrói o diálogo
   ExtDialog.Destroy(reason);
   ExtDialog2.Destroy(reason);      
  }
//+------------------------------------------------------------------+
//| Função de evento do gráfico do Expert                            |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // ID do evento  
                  const long& lparam,   // parâmetro do evento do tipo long
                  const double& dparam, // parâmetro do evento do tipo double
                  const string& sparam) // parâmetro do evento do tipo string
  {
   ExtDialog.ChartEvent(id,lparam,dparam,sparam);
   ExtDialog2.ChartEvent(id,lparam,dparam,sparam);   
  }
//+------------------------------------------------------------------+
//| Cria o botão "Button1"                                           |
//+------------------------------------------------------------------+
bool CAppWindowTwoButtons::CreateButton1(void)
  {
//--- coordenadas
   int x1=INDENT_LEFT;        // x1            = 11  pixels
   int y1=INDENT_TOP;         // y1            = 11  pixels
   int x2=x1+BUTTON_WIDTH;    // x2 = 11 + 100 = 111 pixels
   int y2=y1+BUTTON_HEIGHT;   // y2 = 11 + 20  = 32  pixels
//--- create
   if(!m_button1.Create(0,"Button1",0,x1,y1,x2,y2))
      return(false);
   if(!m_button1.Text("Button1"))
      return(false);
   if(!Add(m_button1))
      return(false);
//--- sucesso
   return(true);
  }
//+------------------------------------------------------------------+
//| Cria o "Button2"                                                 |
//+------------------------------------------------------------------+
bool CAppWindowTwoButtons::CreateButton2(void)
  {
//--- coordenadas
   int x1=INDENT_LEFT+2*(BUTTON_WIDTH+CONTROLS_GAP_X);   // x1 = 11  + 2 * (100 + 5) = 221 pixels
   int y1=INDENT_TOP;                                    // y1                       = 11  pixels
   int x2=x1+BUTTON_WIDTH;                               // x2 = 221 + 100           = 321 pixels
   int y2=y1+BUTTON_HEIGHT;                              // y2 = 11  + 20            = 31  pixels
//--- create
   if(!m_button2.Create(0,"Button2",0,x1,y1,x2,y2))
      return(false);
   if(!m_button2.Text("Button2"))
      return(false);
   if(!Add(m_button2))
      return(false);
//--- sucesso
   return(true);
  }
//+------------------------------------------------------------------+
Razão: