WideStudio Programming Guide

| WideStudio Programming Guide | WideStudio Index Table of contents

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

> 윈도우를 닫고 응용프로그램을 종료하는 경우 데이터의 저장을 실행하고나 종료할가 말가를 대화 상자로 표시할 경우가 있습니다. 그럴 경우 WSCwindow / WSCmainWindow 클래스의 EXIT 트리거(trigger)로 이벤트 프로시저 를 이용하면 변리합니다. WSCwindow/WSCmainWindow 클래스는 윈도우가 불가시 상태에된 경우에 EXIT 트리거(trigger)를 불러 응용프로그램가 종료하기 전에 이벤트 프로시저를 실행할 기능을 가지고있습니다.
> 우선 WSCwindow 또는 WSCmainWindow 클래스의 속성 "exit" 를 True 로 합니다. 이 속성은 응용프로그램중의 윈도우에서 특히 메인로 이용되는것에 설정하면 좋을것입니다. 그래서 그 윈도우에 대해서 EXIT 트리거(trigger)로 이벤트 프로시저를 붙여놓습니다.
> 다음과 같은 기능을 가지는 이벤트 프로시저를 만들어봅시다.
> - 종료할가 말가의 대화 상자를 표시.
> - [OK]가 선택된 경우는 처리를 실행해서 종료.
> - [NO]가 선택된 경우는 처리를 안하고 종료.
> - [CANCEL]가 선택된 경우는 처리를 안하고 종료도 안함.

>     #----------------------------------------------------------
>     #Function for the event procedure
>     #----------------------------------------------------------
>     # 객체를 다시 표시할 타이머 프로시저
>     use mpfc;

>     $timer = 0;
>     $target = 0;
>     sub delayproc {
>       my ($object) = @_;

>       if ($target != 0){
>         $target->setVisible($mpfc::True);
>       }
>       return;
>     }

>     # EXIT 이벤트 프로시저본체
>     # 종료시에 대화상자를 표시한다.
>     sub exit_ep {
>       my ($object) = @_;
>       if ($object->getVisible() != $mpfc::False){
>         return;
>       }
>       $msg = mpfc::WSGIappMessageDialog(); #A
>       $msg->setProperty("width",500);
>       $msg->setProperty("no",$mpfc::True);
>       $msg->setProperty("defaultPosition",$mpfc::True);
>       $msg->setProperty("labelString",
>         "Exit and save data?\n If you do not want to save and exit,push NO...");

>       # 대화상자의 표시
>       $ret = $msg->popup(); #B

>       # 처음 실행한때 타이머를 작성
>       if ($timer == 0){
>         $timer = new mpfc::WSCvtimer($object,"objname");
>         $timer->init();
>         $timer->setProperty("interval",250);
>         $timer->setProperty("cont",$mpfc::False);
>         $timer->addProcedure("delay-popup","delayproc",$mpfc::WSEV_ACTIVATE);
>       }
>       if ($ret == $mpfc::WS_DIALOG_OK){         # OK단추가 눌린 경우 C
>         # saving some data ...
>         exit(0);
>       }elsif ($ret == $mpfc::WS_DIALOG_NO){       # NO단추가 눌린 경우 D
>         exit(0);
>       }elsif ($ret == $mpfc::WS_DIALOG_CANCEL){   # CANCEL단추가 눌린 경우 E
>         $target = $object;
>         $timer->setProperty("running",$mpfc::True);   # 타이머의 기동
>       }
>       return;
>     }
>     1;

> A 에서 메시지 대화 상자 인스턴스를 취득해서 B 에서 메시지 대화 상자를 표시합니다.
> C,D,E 에서 대화 상자의 결과를 판정해서 OK 단추가 눌렸으면 C, NO 단추가 눌렸으면 D, CANCEL 단추가 눌렸으면 E 로 됩니다.
> E 의 종료안하고 다시 표시할 경우, 타이머를 쓰고, 좀 타이밍을 늦출필요가 있습니다. 이것은 윈도우 시스템에 대해 미리 화면종료 이벤트가 발생하고있으므로 그 이벤트의 처리가 확실히 처리되였다가 표시를 실행햐여야하기때문입니다.

> ［ 종료 확인 대화 상자］

Document Release 3.70 for WideStudio ver 3.70, Feb 2004

WideStudio documents index | Table of contents

Copyright(C) T. Hirabayashi, 2000-2004 | Last modified: Feb 25, 2004