C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[55562] Re:Re:메인폼 종료하기 질문
나그네 [] 1606 읽음    2008-12-27 01:27
그런방법도 있었네요.
전 그냥 안보이는 폼을 하나 만들어서 그 폼에서 메인폼 뛰우고(정수형 정적 변수 하나를 두어서 폼이 뜰때마다 증가하고 폼이 닫힐때 마다 감소하게 함 -> 메인폼까지 다 닫히면 1이 됨)
타이머 켜서 주기적으로 체크하게 해서 1이 되면 종료하게 해놨는데요..
(아래 방법으로 하니... 에러 나네요..)

장성호 님이 쓰신 글 :
: VCL(Delphi 또는 C++BUilder) 에서는 
:
: 시스템 큐에서 Message를 가져와서(GetMessage or PeekMessage)
: 해당 윈도우프로시져로 Despatch 해주는 루프가 Application 객체에서 담당하고 있습니다.
:
: 그런데 Application에서는 MainForm이 Close되면 프로그램을 종료하도록 되어있습니다.
:
: 그럼 메인폼은 어떻게 결정될가요?
: Application->CreateForm(...); 이런식으로 맨먼저 생성되는 Form이 메인폼이 됩니다.
:
: C++Builder 같은 경우 Projectxx.cpp 파일에 보면 WinMain이 있는데
: 여기서  Application->CreateForm(..) 으로 맨먼저 생성하는 폼이 메인폼이 됩니다.
:
:
: 결론적으로
: VCL에서는 Application->MainForm이 Close되면 어플리케이션 자체가 종료되기때문에
: 메인폼은 프로그램 끝날때까지 Close하지 말아야 합니다.
:
: 음.. 님의 경우에는
: Form2를 먼저 띄우는데  Form2가 먼저뜨면 Form2가 메인폼이 되기때문에...
: 문제가 발생한듯 합니다.
:
: Projectxx.cpp 의 WinMain에서 
: Form2를 Create하여 ShowModal을 먼저 하는것이 좋을것 같습니다.
: 문론 Form2를 Create할때 Application->CreateForm 생성하지 마시고
: 그냥 new를 사용해서 생성해야 하구요...
: 대충 다음과 같이...
:
: WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
: {
:     try
:     {
:          Application->Initialize();
:          TForm2 *frm2=new TForm2(Application);
:          frm2->ShowModal();
:         // Application->CreateForm(__classid(TMainForm), &MainForm);
:          Application->Run();
:     }
:     catch (Exception &exception)
:     {
:          Application->ShowException(&exception);
:     }
:     catch (...)
:     {
:          try
:          {
:              throw Exception("");
:          }
:          catch (Exception &exception)
:          {
:              Application->ShowException(&exception);
:          }
:     }
:     return 0;
: }
: //---------------------------------------------------------------------------
: 

:
:
: 그럼...
:
: Terry 님이 쓰신 글 :
: : 메인폼에서 셋팅을 하고  확인버튼을 누르면
: : 하위 폼이 생성되도록 프로그램을 만들고 있습니다.
: : 확인 버튼을 누르면 메인폼을 종료시키고 하위폼만 작동되게 하고싶은데
: : 메인폼을 Close시켜버리면 하위폼까지 죽어버리더군요
: : 좋은 방법이 없을까요?
: :
: : void __fastcall TForm2::Button1Click(TObject *Sender)
: : {
: :     Application->CreateForm(__classid(TMainForm), &MainForm);
: :     MainForm->ShowModal();
: :     Close():
: : }
: : //---------------------------------------------------------------------------

+ -

관련 글 리스트
55557 메인폼 종료하기 질문 Terry 1019 2008/12/26
55558     Re:메인폼 종료하기 질문 장성호 1179 2008/12/26
55562         Re:Re:메인폼 종료하기 질문 나그네 1606 2008/12/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.