Hi!
Here is my code:
project files : SimpleWinClose.*
main window files : TMainWinFile1.*
modal window files : TModalWinFile1.*
To simulate some network activities I create and delete some files on network disk L:.
To simulate work with network problems I pull out network cable, click a button, wait for a few seconds, pull cable again in and click in the window again.
SimpleWinClose.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("TMainWin1File.cpp", MainWin1);
USEFORM("tModalWin1File.cpp", ModalWin1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TMainWin1), &MainWin1);
Application->CreateForm(__classid(TModalWin1), &ModalWin1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------------------------
SimpleWinClose.bpr
<?xml version='1.0' encoding='utf-8' ?>
<!-- C++Builder XML Project -->
<PROJECT>
<MACROS>
<VERSION value="BCB.06.00"/>
<PROJECT value="SimpleWinClose.exe"/>
<OBJFILES value="SimpleWinClose.obj TMainWin1File.obj tModalWin1File.obj"/>
<RESFILES value="SimpleWinClose.res"/>
<IDLFILES value=""/>
<IDLGENFILES value=""/>
<DEFFILE value=""/>
<RESDEPEN value="$(RESFILES) TMainWin1File.dfm tModalWin1File.dfm"/>
<LIBFILES value=""/>
<LIBRARIES value=""/>
<SPARELIBS value="vcl.lib rtl.lib"/>
<PACKAGES value="vcl.bpi rtl.bpi dbrtl.bpi adortl.bpi vcldb.bpi vclx.bpi bdertl.bpi
vcldbx.bpi ibxpress.bpi dsnap.bpi cds.bpi bdecds.bpi qrpt.bpi teeui.bpi
teedb.bpi tee.bpi dss.bpi teeqr.bpi visualclx.bpi visualdbclx.bpi
dsnapcrba.bpi dsnapcon.bpi bcbsmp.bpi vclie.bpi xmlrtl.bpi inet.bpi
inetdbbde.bpi inetdbxpress.bpi inetdb.bpi nmfast.bpi webdsnap.bpi
bcbie.bpi websnap.bpi soaprtl.bpi dclocx.bpi dbexpress.bpi dbxcds.bpi
indy.bpi bcb2kaxserver.bpi"/>
<PATHCPP value=".;"/>
<PATHPAS value=".;"/>
<PATHRC value=".;"/>
<PATHASM value=".;"/>
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
<RELEASELIBPATH value="$(BCB)\lib\release"/>
<LINKER value="ilink32"/>
<USERDEFINES value="_DEBUG"/>
<SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/>
<MAINSOURCE value="SimpleWinClose.cpp"/>
<INCLUDEPATH value="$(BCB)\include;$(BCB)\include\vcl"/>
<LIBPATH value="$(BCB)\lib\obj;$(BCB)\lib"/>
<WARNINGS value="-w-par"/>
<OTHERFILES value=""/>
</MACROS>
<OPTIONS>
<IDLCFLAGS value="-I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/>
<CFLAG1 value="-Od -H=$(BCB)\lib\vcl60.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c
-tW -tWM"/>
<PFLAGS value="-$YD -$W -$O- -$A8 -v -JPHNE -M"/>
<RFLAGS value=""/>
<AFLAGS value="/mx /w2 /zd"/>
<LFLAGS value="-D"" -aa -Tpe -x -Gn -v"/>
<OTHERFILES value=""/>
</OPTIONS>
<LINKER>
<ALLOBJ value="c0w32.obj $(PACKAGES) Memmgr.Lib sysinit.obj $(OBJFILES)"/>
<ALLRES value="$(RESFILES)"/>
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib"/>
<OTHERFILES value=""/>
</LINKER>
<FILELIST>
<FILE FILENAME="SimpleWinClose.res" FORMNAME="" UNITNAME="SimpleWinClose.res" CONTAINERID="ResTool" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="SimpleWinClose.cpp" FORMNAME="" UNITNAME="SimpleWinClose" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="TMainWin1File.cpp" FORMNAME="MainWin1" UNITNAME="TMainWin1File" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="tModalWin1File.cpp" FORMNAME="ModalWin1" UNITNAME="tModalWin1File" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
</FILELIST>
<BUILDTOOLS>
</BUILDTOOLS>
<IDEOPTIONS>
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=3079
CodePage=1252
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[HistoryLists\hlIncludePath]
Count=1
Item0=$(BCB)\include;$(BCB)\include\vcl
[HistoryLists\hlLibraryPath]
Count=1
Item0=$(BCB)\lib\obj;$(BCB)\lib
[HistoryLists\hlDebugSourcePath]
Count=1
Item0=$(BCB)\source\vcl
[HistoryLists\hlConditionals]
Count=1
Item0=_DEBUG
[Debugging]
DebugSourceDirs=$(BCB)\source\vcl
[Parameters]
RunParams=
Launcher=
UseLauncher=0
DebugCWD=
HostApplication=
RemoteHost=
RemotePath=
RemoteLauncher=
RemoteCWD=
RemoteDebug=0
[Compiler]
ShowInfoMsgs=0
LinkDebugVcl=0
LinkCGLIB=0
[CORBA]
AddServerUnit=1
AddClientUnit=1
PrecompiledHeaders=1
[Language]
ActiveLang=
ProjectLang=
RootDir=
</IDEOPTIONS>
</PROJECT>
TMainWin1File.h
//---------------------------------------------------------------------------
#ifndef TMainWin1FileH
#define TMainWin1FileH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TMainWin1 : public TForm
{
__published: // Von der IDE verwaltete Komponenten
TButton *OpenModal;
void __fastcall OpenModalClick(TObject *Sender);
private: // Anwender-Deklarationen
public: // Anwender-Deklarationen
__fastcall TMainWin1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TMainWin1 *MainWin1;
//---------------------------------------------------------------------------
#endif
TMainWin1File.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "TMainWin1File.h"
#include "TModalWin1File.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainWin1 *MainWin1;
//---------------------------------------------------------------------------
__fastcall TMainWin1::TMainWin1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainWin1::OpenModalClick(TObject *Sender)
{
ModalWin1->ShowModal();
}
//---------------------------------------------------------------------------
TMainWin1File.dfm
--------------------------
object MainWin1: TMainWin1
Left = 192
Top = 114
Width = 696
Height = 480
Caption = 'MainWin1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object OpenModal: TButton
Left = 112
Top = 304
Width = 75
Height = 25
Caption = 'OpenModal'
TabOrder = 0
OnClick = OpenModalClick
end
end
tModalWin1File.h
//---------------------------------------------------------------------------
#ifndef tModalWin1FileH
#define tModalWin1FileH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TModalWin1 : public TForm
{
__published: // Von der IDE verwaltete Komponenten
TButton *NetworkAndClose;
void __fastcall NetworkAndCloseClick(TObject *Sender);
private: // Anwender-Deklarationen
public: // Anwender-Deklarationen
__fastcall TModalWin1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TModalWin1 *ModalWin1;
//---------------------------------------------------------------------------
#endif
tModalWin1File.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "tModalWin1File.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TModalWin1 *ModalWin1;
//---------------------------------------------------------------------------
__fastcall TModalWin1::TModalWin1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TModalWin1::NetworkAndCloseClick(TObject *Sender)
{
AnsiString fileName;
int fh = 0; // filehandle
int anz = 50 ;
for (int i =1; i<anz;i++)
{
fileName = "L:\SimplWinCloseFile" + AnsiString(i).Trim()+".log" ;
if ( !FileExists(fileName) )
{
fh = FileCreate(fileName);
FileClose(fh);
}
}
for (int i =1; i<anz;i++)
{
fileName = "L:\SimplWinCloseFile" + AnsiString(i).Trim()+".log" ;
if ( FileExists(fileName) )
{
DeleteFile(fileName);
}
}
Close();
}
//---------------------------------------------------------------------------
tModalWin1File.dfm
object ModalWin1: TModalWin1
Left = 192
Top = 114
Width = 696
Height = 480
Caption = 'ModalWin1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object NetworkAndClose: TButton
Left = 464
Top = 160
Width = 139
Height = 25
Caption = 'NetworkAndClose'
TabOrder = 0
OnClick = NetworkAndCloseClick
end
end