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