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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[615] 폼의 시작인 OnCreate 이벤트에서 프로그램 종료하기.
김태선 [jsdkts] 8985 읽음    2006-06-01 11:34
메인폼의 시작인 OnCreate 이벤트에서
바로 프로그램을 종료하기 싶을때는 어떻게 할까요?
폼의 종료를 알리는 Close(); 함수를 아무리 호출해봐야 폼은 종료되지 않습니다.
OnCreate 이벤트 뿐만 아니라, OnActivate 등의 이벤트에서도 마찬가지로
Close(); 함수로 폼을 종료할 수 없습니다.

방법은 어플에 WM_QUIT 메시지를 강제로 발생시켜 주면 됩니다.
그런데 이 메시지를 어플리케이션에 강제로 발생시켜 폼을 종료하게 하는 함수가 이미 API에 준비되어 있습니다.

아래는 사용예입니다.

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    ; // 당신의 폼생성 이벤트 코드
    ; // 
    ; // 만일 조건에 합당치 않아 바로 프로그램을 종료해야 한다면..

    // 지금 즉시 프로그램을 종료한다.
    if (bQuit)
        PostQuitMessage(0); // 필요하다면 0 대신 다른 ExitCode를 줘도 됩니다.
}



이상, 초보용 날팁이었습니다 -.-;
하늘꾸미 [skymaker]   2006-07-26 13:51 X
아거 찾던건데 감사합니다 (__)
장성호 [nasilso]   2006-07-28 13:36 X
이런 방법도 있어요..
종료하고자 할때
WinMain에서 Application->Run을 실행하지 않는 방법입니다.
위방법은 Form이 껌벅거리는데
이방법으로 할경우
간단함 폼이면 껌벅거림이 없습니다.
//---------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    bExit=true; //종료할경우...
}
//---------------------------------------------------------------------------
//== Project.cpp에서 ...

#include "Unit1.h"
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    try
    {
         Application->Initialize();
         Application->CreateForm(__classid(TForm1), &Form1);
         if(!Form1->bExit)//종료하고자 할때 Application->Run을 실행하지 않습니다.
         {
            Application->Run();
         }
         ...


참고로
PostQuitMessage(0); 는 Application->Terminate(); 과 똑같이 동작합니다

+ -

관련 글 리스트
615 폼의 시작인 OnCreate 이벤트에서 프로그램 종료하기. 김태선 8985 2006/06/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.