|
메인 윈도우에서 여는 서브 윈도우의 Close Event에서 가지고 있던 Resource를 자동 해제하려고 이렇게 썼습니다.
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
근데, 메인 윈도우에서 Form2를 열고, 닫은 후에도 Form2의 변수 값에 접근할 수 있고,
그런데.. delete는 할 수 없고.. 이게 어찌된 영문 인 지?
[ Main Window의 Button Event ]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TForm2 *pForm = new TForm2(this);
pForm->ShowModal(); // 모달 상자로 열었음.
k =pForm->m_ikk; // Form2의 멤버에 접근이 가능함.
delete pForm; // Access Violation나옴.
}
변수값은 Access가능하고, Form를 delete할 때는 에러나고.. 속시원히 해결을 좀?
Action = caFree이면 폼이 가지고 있던 모든 리소스도 해제되는 것 아닌가요?
그리고, 사실 다른 곳에서 썼던 스크립트는 위와 비슷한 코드인데.. delete pForm에서 전혀 에러를 내지
않고 잘 나갑니다. 가끔 프로그램이 Access Violation을 내는데..여긴 지 아닌 지는 잘 모르겠지만..
어쨌거나 잘 돌아가는 경우가 더 많다는 것이죠.. 좀 헷갈려서..... 속시원히 해결해 주실분 부탁해요..
감사합니다.
|