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
[24506] 허억!!!!!
삼수 [] 724 읽음    2003-02-26 19:20
이런 이런.... 정말 맴버에서 delete 가 되는군요.

그동안 저는 맴버에서 delete가 안되는걸로 알고 있었습니다.

도데체 어찌된 일인지..휴.고맙습니다.

항상 행복하세요 ^^




정재필 님이 쓰신 글 :
: 확실한건 VCL 소스를 봐야 알겠지만...
: (TForm 외부에서 delete 하게 만들면 되죠 ^^)
:
: OnClose라는게 WindowProc에서 WM_CLOSE가 발생할 때 실행될 텐데...
:
: switch (Message) {
:     case WM_CLOSE: {
:             DoOnClose();            // OnClose 발생
:             if (Form1->Action == caFree) {
:                 delete Form1;
:                 Form1 = NULL;
:             }
:         }
:         break;
: }
:
: 뭐 이렇게 하셔도 될 거 같고...
: 삭제하라는 메시지를 정의해서 PostMessage()로 Form1의 포인터와 같이 날린 다음에
: WindowProc에서 처리해도 될 테구요.
:
: 근데... 제가 알기로는 멤버함수가 delete this;를 해도 되는걸로 알고 있습니다만...
: 지금 해봐도 잘 되구요.
:
: 다만 delete this;를 한 후에 멤버변수나 멤버함수를 다시 호출하게 되면 문제가
: 되겠지만 delete this;를 한 후에 바로 리턴되게 되면 아무 문제 없을 거 같습니다.
:
:
:
:
:
:
:
:
:
: 삼수 님이 쓰신 글 :
: : 안녕하세요.
: :
: : TForm의 이벤트함수중 OnClose라는 놈이 있습니다.
: :
: : 이놈의 파라메터중 Acton에 = caFree를 해주면 자신 TForm이 자동빵으로 메모리해제(delete)가 됩니다.
: :
: : 이런 구조가 어떻게해서 구현이 되었는지 궁금합니다.
: :
: : Class에서 맴버함수에서 자신을 delete할 수 없습니다. 근데 TForm에서는 되는거지요
: :
: : 어떻게해서 저런기능으 구현하였는지 자세히 알고 싶습니다.
: :
: : 저도 구현해보고 싶거든요
: :
: : 그럼 부탁드립니다.

+ -

관련 글 리스트
24501 OnClose의 Action = caFree의 알고리즘을 알고싶습니다. 삼수 982 2003/02/26
24504     Re:OnClose의 Action = caFree의 알고리즘을 알고싶습니다. 정재필 1161 2003/02/26
24506         허억!!!!! 삼수 724 2003/02/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.