WideStudio/MWT Logo
WideStudio/MWT
Programming Guide
WideStudio/MWT Index
Table of contents


EXIT 트리거(trigger)에의한 종료 이벤트 프로시저에서 대화 상자를 표시하기에는

윈도우를 닫고 응용프로그램을 종료하는 경우 데이터의 저장을 실행하고나 종료할가 말가를 대화 상자로 표시할 경우가 있습니다. 그럴 경우 WSCwindow / WSCmainWindow 클래스의 EXIT 트리거(trigger)로 이벤트 프로시저 를 이용하면 변리합니다. WSCwindow/WSCmainWindow 클래스는 윈도우가 불가시 상태에된 경우에 EXIT 트리거(trigger)를 불러 응용프로그램가 종료하기 전에 이벤트 프로시저를 실행할 기능을 가지고있습니다.

먼저 WSCwindow 혹은 WSCmainWindow 클래스의 속성 WSNexit 을 True 로 합니다. 이 속성은 응용프로그램중의 윈도우에서 특히 메인로 이용되는것에 설정하면 좋을것입니다. 그래서 그 윈도우에 대해서 EXIT 트리거(trigger)로 이벤트 프로시저를 붙여놓습니다.

다음과 같은 기능을 가지는 이벤트 프로시저를 만들어봅시다.


  • 종료할가 말가의 대화 상자를 표시.

  • [OK]가 선택된 경우는 처리를 실행해서 종료.

  • [NO]가 선택된 경우는 처리를 안하고 종료.

  • [CANCEL]가 선택된 경우는 처리를 안하고 종료도 안함.
  • #include <WScom.h>
    #include <WSCfunctionList.h>
    #include <WSCbase.h>
    //----------------------------------------------------------
    //Function for the event procedure
    //----------------------------------------------------------
    #include <WSCmessageDialog.h>
    #include <WSDtimer.h>
    
    // 객체를 다시 표시하는 타이머 프로시저
    void delayproc(unsigned char,void* ptr){
      WSCbase* object = (WSCbase*)ptr;
      object->setVisible(True);
    }
    //EXIT  이벤트 프로시저본체
    // 종료시에는 대화 상자를 표시한다.
    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...");
      // 대화 상자의 표시
      long ret = msg->popup(); //B
    
      if (ret == WS_DIALOG_OK){ //OK 단추가 눌린 경우 C
        //saving some data ...
        exit(0);
      }else
      if (ret == WS_DIALOG_NO){ //NO 단추가 눌린 경우 D
        exit(0);
      }else
      if (ret == WS_DIALOG_CANCEL){ //CANCEL 단추가 눌린 경우 E
        WSGIappTimer()->addTriggerProc(delayproc,WS250MS,object);
      }
    }
    static WSCfunctionRegister  op("exit_ep",(void*)exit_ep);
    

    A 에서 메시지 대화 상자 인스턴스를 취득해서 B 에서 메시지 대화 상자를 표시합니다.

    C,D,E 에서 대화 상자의 결과를 판정해서 OK 단추가 눌렸으면 C, NO 단추가 눌렸으면 D, CANCEL 단추가 눌렸으면 E 로 됩니다.

    E 의 종료안하고 다시 표시할 경우, 타이머를 쓰고, 좀 타이밍을 늦출필요가 있습니다. 이것은 윈도우 시스템에 대해 미리 화면종료 이벤트가 발생하고있으므로 그 이벤트의 처리가 확실히 처리되였다가 표시를 실행햐여야하기때문입니다.



    [ 종료 확인 대화 상자]


    Document Release 3.90 for WideStudio/MWT ver 3.90, Jul 2005


    WideStudio/MWT documents index | Table of contents

    Copyright(C) WideStudio/MWT Development Team, 1999-2005 Last modified: Jul 31, 2005