|
확실한건 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에서는 되는거지요
:
: 어떻게해서 저런기능으 구현하였는지 자세히 알고 싶습니다.
:
: 저도 구현해보고 싶거든요
:
: 그럼 부탁드립니다.
|