WideStudio Logo
WideStudio
Programming Guide
WideStudio Index
Table of contents


Como indicar um diálogo no procedimento de evento WSEV_EXIT

É necessário salvar os dados antes de iniciar um diálogo quando terminar a aplicação pelo encerramento da janela. Neste caso, é conveniente usaro procedimento de evento WSEV_EXIT da classe WSCwindow/WSCmainWindow.
A classe WSCwindow/WSCmainWindow dispara WSEV_EXIT quando a janela é fechada antes do término da aplicação.
Primeiro, ajuste "True" para a propriedade WSNexit de instância WSCwindow/WSCmainWindow a qual é usada como janela principal na aplicação, insira um procedimento de evento nela com WSEV_EXIT trigger.

Apresentaremos um exemplo a seguir.

  • Cria um diálogo que pergunta se encerra ou continua.

  •   Se [OK] é selecionado, então encerra..

  •   Se [NO] é selecionado, sai da aplicação sem processo.

  •   Se [CANCEL] é selecionado, nada é feito e não sai da aplicação.
  • #include <WScom.h>
    #include <WSCfunctionList.h>
    #include <WSCbase.h>
    //----------------------------------------------------------
    //Function for the event procedure
    //----------------------------------------------------------
    #include <WSCmessageDialog.h>
    #include <WSDtimer.h>
    
    //The timer procedure which redisplay the window.
    void delayproc(unsigned char,void* ptr){
      WSCbase* object = (WSCbase*)ptr;
      object->setVisible(True);
    }
    //EXIT event procedure
    //Indicates a dialog.
    void exit_ep(WSCbase* object){
      if (object->getVisible() != False){
        return;
      }
      WSCmessageDialog* msg = WSGIappMessageDialog(); //A
      msg->setProperty(WSNwidth,500);
      msg->setProperty(WSNno,True);
      msg->setProperty(WSNdefaultPosition,True);
      msg->setProperty(WSNlabelString,
      "Exit and save data?\n If you do not want to save and exit,push NO...");
      //Indicates the dialog.
      long ret = msg->popup(); //B
    
      if (ret == WS_DIALOG_OK){ //When OK is selected.. C
        //saving some data ...
        exit(0);
      }else
      if (ret == WS_DIALOG_NO){ //When NO is selected.. D
        exit(0);
      }else
      if (ret == WS_DIALOG_CANCEL){ //When CANCEL is selected.. E
        WSGIappTimer()->addTriggerProc(delayproc,WS250MS,object);
      }
    }
    static WSCfunctionRegister  op("exit_ep",(void*)exit_ep);
    
      
    Obtenha a instância do diálogo de mensagem (A)
    Get the instance of the message dialog (A), indicando-a (B). Verifique o resultado do diálogo(C)(D)(E). Se necessário executar o procedimento com retardo para reapresentar a janela. Eventos de saída são necessário para promover a reapresentação da janela.


    [o diálogo de saída]


    Document Release 3.80 for WideStudio ver 3.80, Jan 2005


    WideStudio documents index | Table of contents

    Copyright(C) WideStudio Development Team, 1999-2005 Last modified: Jan 05, 2005