From c0054f06cd8e7b2e86ec80cb792641fb632f2cbe Mon Sep 17 00:00:00 2001 From: pierre Date: Fri, 31 Jan 2003 11:01:50 +0000 Subject: [PATCH] + handle closing events --- fv/w32smsg.inc | 26 +++++++++++++++++++++++++- fvision/w32smsg.inc | 26 +++++++++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/fv/w32smsg.inc b/fv/w32smsg.inc index 4d6150d8b2..018a538320 100644 --- a/fv/w32smsg.inc +++ b/fv/w32smsg.inc @@ -62,6 +62,25 @@ procedure SystemEventHandler(var ir:INPUT_RECORD); var Xsize, YSize : longint; +function HandleConsoleCtrl(typ : dword) : BOOL; stdcall; +var + SE : TSystemEvent; +begin + HandleConsoleCtrl:=false; + case typ of + CTRL_CLOSE_EVENT, + CTRL_LOGOFF_EVENT, + CTRL_SHUTDOWN_EVENT : + begin + SE.typ:=SysClose; + SE.CloseTyp:=typ; + PutSystemEvent(SE); + HandleConsoleCtrl:=true; + end; + end; +end; + + procedure InitSystemMsg; var @@ -86,6 +105,7 @@ begin InitializeCriticalSection(ChangeSystemEvents); SetResizeEventHandler(@SystemEventHandler); SetFocusEventHandler(@SystemEventHandler); + SetConsoleCtrlHandler(@HandleConsoleCtrl,true); SystemEventActive:=true; end; @@ -104,6 +124,7 @@ begin SetResizeEventHandler(nil); SetFocusEventHandler(nil); DeleteCriticalSection(ChangeSystemEvents); + SetConsoleCtrlHandler(@HandleConsoleCtrl,false); SystemEventActive:=false; end; @@ -170,7 +191,10 @@ end; { $Log$ - Revision 1.2 2002-06-06 20:32:34 pierre + Revision 1.3 2003-01-31 11:01:50 pierre + + handle closing events + + Revision 1.2 2002/06/06 20:32:34 pierre * check console window size changes Revision 1.1 2002/05/21 11:59:57 pierre diff --git a/fvision/w32smsg.inc b/fvision/w32smsg.inc index 4d6150d8b2..018a538320 100644 --- a/fvision/w32smsg.inc +++ b/fvision/w32smsg.inc @@ -62,6 +62,25 @@ procedure SystemEventHandler(var ir:INPUT_RECORD); var Xsize, YSize : longint; +function HandleConsoleCtrl(typ : dword) : BOOL; stdcall; +var + SE : TSystemEvent; +begin + HandleConsoleCtrl:=false; + case typ of + CTRL_CLOSE_EVENT, + CTRL_LOGOFF_EVENT, + CTRL_SHUTDOWN_EVENT : + begin + SE.typ:=SysClose; + SE.CloseTyp:=typ; + PutSystemEvent(SE); + HandleConsoleCtrl:=true; + end; + end; +end; + + procedure InitSystemMsg; var @@ -86,6 +105,7 @@ begin InitializeCriticalSection(ChangeSystemEvents); SetResizeEventHandler(@SystemEventHandler); SetFocusEventHandler(@SystemEventHandler); + SetConsoleCtrlHandler(@HandleConsoleCtrl,true); SystemEventActive:=true; end; @@ -104,6 +124,7 @@ begin SetResizeEventHandler(nil); SetFocusEventHandler(nil); DeleteCriticalSection(ChangeSystemEvents); + SetConsoleCtrlHandler(@HandleConsoleCtrl,false); SystemEventActive:=false; end; @@ -170,7 +191,10 @@ end; { $Log$ - Revision 1.2 2002-06-06 20:32:34 pierre + Revision 1.3 2003-01-31 11:01:50 pierre + + handle closing events + + Revision 1.2 2002/06/06 20:32:34 pierre * check console window size changes Revision 1.1 2002/05/21 11:59:57 pierre